【问题标题】:Using cURL or wget for multiple sites对多个站点使用 cURL 或 wget
【发布时间】:2017-03-11 23:39:07
【问题描述】:

有没有一种简单的方法可以从多个(按顺序编号的)站点下载图像文件,并更改文件名以匹配下载位置?

例如,

www.001.mysite.com/photo.jpg

www.002.mysite.com/photo.jpg

...

...

www.050.mysite.com/photo.jpg

照片在每个网站上的名称都相同。是否可以下载这些照片,将它们重命名为 photo001.jpg(对应于它来自的站点),并将它们放入当前日期的目录中?

我从一些搜索开始...找到了一些有助于解决其中一部分的想法和其他不同部分的想法,但是当我尝试让它发挥作用时,我要么一无所获,要么出现错误。

【问题讨论】:

  • 您使用编程或脚本语言吗?
  • 快速命令行,假设您使用的是 macOS 或 Linux 并且 bash 是您选择的 shell:for i in {1..50}; do j=$(printf %03d $i); echo curl -o image$j.jpg http://www.$j.mysite.com/photo.jpg; done。调整它直到看起来你需要然后删除 echo 让它这样做(echo 使它只显示命令而不是运行它们)。
  • 您可以为此使用配置文件。这是手册页中的 -K。

标签: curl wget


【解决方案1】:

您可以为此使用 Bash,但我不了解 Bash,所以这里有一个 Python 示例,它利用多个并发进程来减少网络服务器上的等待,以防您需要下载大量图像:

import os
num_images = 100 # change me
num_concurrent = 4 # to be tweaked
i = 0
while i < num_images:
    calls = []
    for i2 in range(num_concurrent):
        # this will download 0, 1, ..., 9, 10, 11
        # change the number format if necessary
        call = "curl www.{0}.mysite.com/photo.jpg > {0}.jpg".format(i)
        calls.append(call)
        i += 1
    os.system(" & ".join(calls))

这将运行批量num_concurrent 图像下载。我建议您在调整此设置时保持保守,因为大量的并发连接会对 TCP 拥塞控制造成严重破坏,并且还可能使您无法访问目标网站。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-10
    • 2013-11-18
    • 2011-05-04
    • 1970-01-01
    • 2019-11-17
    • 2019-02-08
    相关资源
    最近更新 更多