【问题标题】:trying to use curl to download a series of files尝试使用 curl 下载一系列文件
【发布时间】:2009-07-22 09:26:49
【问题描述】:

我正在尝试使用 curl 下载以下格式的一系列文件:

http://example.com/001.jpg

..

http://example.com/999.jpg

所以我使用了这个命令:

时间卷曲 “http://example.com/[0-9][0-9][0-9].jpg” -o "#1#2#3.gif"

但有些文件不存在,该命令将在我端创建文件,但实际上它只会包含错误页面。

我需要一种方法让 curl 在下载之前检查它是否存在于远程服务器上。

我知道 wget 可以做到,但 wget 似乎需要大约 5 倍的时间才能运行。我在 wget 中尝试过的命令是这样的:

时间 wget http://example.com/{0..9}{0..9}{0..9}.jpg

【问题讨论】:

    标签: curl wget


    【解决方案1】:

    试试 -f/--fail 选项:

    (HTTP) 在服务器错误时静默失败(根本没有输出)。这主要是为了更好地使脚本等更好地处理失败的尝试。在正常情况下,当 HTTP 服务器无法传递文档时,它会返回一个 HTML 文档来说明这一点(通常还描述了原因等等)。此标志将阻止 curl 输出该标志并返回错误 22。

    此方法不是万无一失的,在某些情况下不成功的响应代码会漏掉,尤其是在涉及身份验证时(响应代码 401 和 407)。

    【讨论】:

    • 嗯,虽然当有 404 时它确实给了我一个输出(到屏幕上)......我不认为有办法摆脱它,所以我只会看到一些东西什么时候能在屏幕上显示?
    • 好吧,您可以使用 --silent 选项停止所有输出。或者只是使用 --stderr=filename_or_devnull 重定向错误,另一种方式:“curl ... 2> filename_or_devnull”(stackoverflow.com/search?q=[bash]+stderr
    猜你喜欢
    • 2014-04-06
    • 2016-05-02
    • 2019-08-15
    • 1970-01-01
    • 2012-09-03
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多