我只找到了puf(并行URL提取程序),但无法从文件中读取url。就像是
puf < urls.txt
也不起作用。
服务器上安装的操作系统是Ubuntu。
我只找到了puf(并行URL提取程序),但无法从文件中读取url。就像是
puf < urls.txt
也不起作用。
服务器上安装的操作系统是Ubuntu。
Answers:
使用GNU Parallel,
$ parallel -j $ {jobs} wget <urls.txt
或xargs
来自GNU Findutils,
$ xargs -n 1 -P $ {jobs} wget <urls.txt
其中${jobs}
是wget
您希望允许并发运行的最大数量(设置-n
为1
在中wget
每行获得一次调用urls.txt
)。如果不使用-j
/ -P
,parallel
则一次将运行与CPU内核一样多的作业(这不一定wget
受网络IO的束缚),并且一次xargs
将运行一次。
parallel
已经结束的一项不错的功能xargs
是将并发运行的作业的输出分隔开,但是如果您不关心它,xargs
则很有可能会预先安装。
jobs
取决于很多因素:路径延迟,路径带宽,远程服务器策略,等等
aria2做到了。
同时http://sourceforge.net/apps/trac/aria2/wiki/UsageExample#Downloadfileslistedinafile
示例:aria2c http://example.org/mylinux.iso
您可以使用Python和pycurl库来实现。pycurl库具有“ multi”接口,该接口实现了自己的偶数循环,该循环启用了多个同时连接。
但是,该接口相当类似于C,因此与其他更“ Pythonic”的代码相比,有点麻烦。
我为此编写了一个包装程序,在其之上构建了一个更完整的类似于浏览器的客户端。您可以以此为例。参见pycopia.WWW.client模块。HTTPConnectionManager包装多接口。
GNU Parallel的手册页的一部分包含并行递归wget的示例。
https://www.gnu.org/software/parallel/man.html#EXAMPLE:-Breadth-first-parallel-web-crawler-mirrorer
HTML被下载了两次:一次用于提取链接,一次用于下载到磁盘。其他内容仅下载一次。
如果您不需要递归,那么短暂的答案就显而易见了。
您的paralell下载的受害者不会被逗乐:他们希望为每个客户端提供一个连接,建立多个连接意味着总体上减少客户端。(即,这被认为是不礼貌的行为)。