我使用wget下载网站内容,但是wget是一个一个下载文件的。
我怎么能让wget下载使用4个同时连接?
我使用wget下载网站内容,但是wget是一个一个下载文件的。
我怎么能让wget下载使用4个同时连接?
当前回答
您可以使用xargs
-P是进程数,例如设置-P 4,将同时下载4个链接,如果设置-P 0, xargs将启动尽可能多的进程,并下载所有的链接。
cat links.txt | xargs -P 4 -I{} wget {}
其他回答
我强烈建议使用httrack。
例如:httrack -v -w http://example.com/
默认情况下,它将使用8个同时连接创建镜像。Httrack有很多游戏地点可供选择。看一看。
由于还没有提到GNU并行,让我给出另一种方式:
cat url.list | parallel -j 8 wget -O {#}.html {}
使用xargs使wget在多个文件中并行工作
#!/bin/bash
mywget()
{
wget "$1"
}
export -f mywget
# run wget in parallel using 8 thread/connection
xargs -P 8 -n 1 -I {} bash -c "mywget '{}'" < list_urls.txt
Aria2选项,正确的工作方式与文件小于20mb
aria2c -k 2M -x 10 -s 10 [url]
-k 2M将文件分割成2mb的块
-k或——min-split-size的默认值是20mb,如果你不设置这个选项并且文件小于20mb,无论-x或-s的值是多少,它都只会在单个连接中运行
为了加快文件下载速度,Wget不支持多个套接字连接。
我想我们可以给出比格里安更好的答案。
正确的方法是使用aria2。
aria2c -x 16 -s 16 [url]
# | |
# | |
# | |
# ---------> the number of connections here
官方文档:
-x,——max-connection-per-server=NUM:每次下载到一台服务器的最大连接数。取值范围:1 ~ 16。默认值:1
-s,——split=N:使用N个连接下载文件。如果提供了超过N个uri,则使用前N个uri,其余url用于备份。如果给出的uri少于N个,则这些url将被使用不止一次,以便同时建立总共N个连接。到同一主机的连接数量由——max-connection-per-server选项限制。另参见——min-split-size选项。取值范围:1-*默认值:5
为每个链接调用Wget并将其设置为在后台运行。
我尝试了这段Python代码
with open('links.txt', 'r')as f1: # Opens links.txt file with read mode
list_1 = f1.read().splitlines() # Get every line in links.txt
for i in list_1: # Iteration over each link
!wget "$i" -bq # Call wget with background mode
参数:
b - Run in Background
q - Quiet mode (No Output)