有并行的wget吗?类似于 fping 但只能下载?

有并行的wget吗?类似于 fping 但只能下载?

我只找到了 puf (并行 URL 获取器),但我无法让它从文件中读取 url;就像是

 puf < urls.txt

也不行。

服务器上安装的操作系统是Ubuntu。

答案1

使用GNU 并行,

$ 并行-j${工作}wget < urls.txt

xargs来自GNU 查找工具,

$ xargs -n 1 -P${工作}wget < urls.txt

其中是您希望允许同时运行${jobs}的最大数量(设置为在 中每行获得一次调用)。如果没有/ ,将一次运行与 CPU 核心一样多的作业(这对于网络 IO 的限制不一定有意义),并且一次运行一个。wget-n1wgeturls.txt-j-Pparallelwgetxargs

一项不错的功能parallelxargs将同时运行的作业的输出分开,但如果您不关心这一点,则xargs更有可能预先安装。

答案2

答案3

您可以使用 Python 和 pycurl 库来实现。 pycurl 库具有“multi”接口,它实现了自己的偶数循环,可实现多个同时连接。

然而,该接口与 C 类似,因此与其他更“Pythonic”的代码相比有点麻烦。

我为它编写了一个包装器,在其之上构建了一个更完整的类似浏览器的客户端。您可以以此为例。请参阅pycopia.WWW.client模块。 HTTPConnectionManager 包装了多接口。

答案4

GNU Parallel 手册页的一部分包含并行递归 wget 的示例。

https://www.gnu.org/software/parallel/man.html#example-breadth-first-parallel-web-crawler-mirrorer

HTML 下载两次:一次用于提取链接,一次用于下载到磁盘。其他内容仅下载一次。

如果您不需要递归性,ephemient 的答案似乎很明显。

相关内容