我使用wget下载网站内容,但是wget是一个一个下载文件的。
我怎么能让wget下载使用4个同时连接?
我使用wget下载网站内容,但是wget是一个一个下载文件的。
我怎么能让wget下载使用4个同时连接?
当前回答
如果你在做递归下载,你还不知道所有的url, wget是完美的。
如果您已经有了想要下载的每个URL的列表,那么可以跳过下面的cURL。
使用Wget递归地进行多个同时下载(未知的url列表)
# Multiple simultaneous donwloads
URL=ftp://ftp.example.com
for i in {1..10}; do
wget --no-clobber --recursive "${URL}" &
done
上面的循环将启动10个wget,每个wget都递归地从同一个网站下载,但是它们不会重叠或下载同一文件两次。
使用——no-clobber可以防止10个wget进程中的每个进程两次下载同一个文件(包括完整的相对URL路径)。
& fork每个wget到后台,允许你运行多个同时下载从同一个网站使用wget。
从url列表中使用curl
如果你已经有了一个想要下载的url列表,curl -Z是并行的curl,默认一次运行50个下载。
然而,对于curl,列表必须是这样的格式:
url = https://example.com/1.html
-O
url = https://example.com/2.html
-O
因此,如果您已经有一个要下载的url列表,只需格式化该列表,然后运行cURL
cat url_list.txt
#https://example.com/1.html
#https://example.com/2.html
touch url_list_formatted.txt
while read -r URL; do
echo "url = ${URL}" >> url_list_formatted.txt
echo "-O" >> url_list_formatted.txt
done < url_list.txt
使用curl从url列表中并行下载:
curl -Z --parallel-max 100 -K url_list_formatted.txt
例如,
$ curl -Z --parallel-max 100 -K url_list_formatted.txt
DL% UL% Dled Uled Xfers Live Qd Total Current Left Speed
100 -- 2512 0 2 0 0 0:00:01 0:00:01 --:--:-- 1973
$ ls
1.html 2.html url_list_formatted.txt url_list.txt
其他回答
为了加快文件下载速度,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
尝试pcurl
http://sourceforge.net/projects/pcurl/
使用curl代替wget,并行下载10段。
您可以使用xargs
-P是进程数,例如设置-P 4,将同时下载4个链接,如果设置-P 0, xargs将启动尽可能多的进程,并下载所有的链接。
cat links.txt | xargs -P 4 -I{} wget {}
我使用gnu并行
cat listoflinks.txt | parallel --bar -j ${MAX_PARALLEL:-$(nproc)} wget -nv {}
cat会将行分隔的url列表管道到parallel ——bar标志将显示并行执行进度条 MAX_PARALLEL env var是并行下载的最大数量,请谨慎使用,这里默认是当前cpu的数量
提示:使用——dry-run来查看如果执行命令会发生什么。 cat listfllinks .txt | parallel——dry-run——bar -j ${MAX_PARALLEL} wget -nv {}
使用咏叹调2:
aria2c -x 16 [url]
# |
# |
# |
# ----> the number of connections
http://aria2.sourceforge.net