当前位置:  开发笔记 > 编程语言 > 正文

是否存在curl/wget选项,表示不会在http错误时保存文件?

如何解决《是否存在curl/wget选项,表示不会在http错误时保存文件?》经验,为你挑选了2个好方法。

我想在脚本中下载很多url但我不想保存那些导致HTTP错误的url.

据我可以从手册页告诉,既不curlwget提供这样的功能.有谁知道另一个下载者呢?



1> Thomas..:

我认为-f可以选择curl做你想做的事情:

-f, --fail

(HTTP)服务器错误无提示失败(根本没有输出).这主要是为了更好地启用脚本等以更好地处理失败的尝试.在正常情况下,当HTTP服务器无法传递文档时,它会返回一个HTML文档(通常也会描述原因和更多).此标志将阻止卷曲输出并返回错误22. [...]

但是,如果响应实际上是301或302重定向,则仍会保存,即使其目标将导致错误:

$ curl -fO http://google.com/aoeu
$ cat aoeu

301 Moved

301 Moved

The document has moved here.

要按照重定向到其死胡同,也可以-L选择:

-L, --location

(HTTP/HTTPS)如果服务器报告请求的页面已移动到其他位置(用Location:标头和3XX响应代码表示),则此选项将使curl重做新位置的请求.[...]



2> Oct..:

我为此目的设置了一个班轮:

(仅适用于单个文件,可能对其他人有用)

A=$$; ( wget -q "http://foo.com/pipo.txt" -O $A.d && mv $A.d pipo.txt ) || (rm $A.d; echo "Removing temp file")

这将尝试从远程主机下载文件.如果出现错误,则不保留该文件.在所有其他情况下,它被保留并重命名.

推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有