wget命令详解——批量下载等

4,078次阅读
没有评论

共计 4646 个字符,预计需要花费 12 分钟才能阅读完成。

  1. 支持断点下传功能
  2. 同时支持 FTP 和 HTTP 下载方式
  3. 支持代理服务器
  4. 设置方便简单
  5. 程序小,完全免费 wget 虽然功能强大,但是使用起来还是比较简单的,基本的语法是:

wget [参数列表] URL

下面就结合具体的例子来说明一下 wget 的用法。1、下载整个 http 或者 ftp 站点。

wget http://place.your.url/here

这个命令可以将 http://place.your.url/here 首页下载下来。使用 - x 会强制建立服务器上一模一样的目录,如果使用 -nd 参数,那么服务器上下载的所有内容都会加到本地当前目录。

wget -r http://place.your.url/here

这个命令会按照递归的方法,下载服务器上所有的目录和文件,实质就是下载整个网站。这个命令一定要小心使用,因为在下载的时候,被下载网站指向的所有地址 同样会被下载,因此,如果这个网站引用了其他网站,那么被引用的网站也会被下载下来!基于这个原因,这个参数不常用。可以用 -l number 参数来指定下载的层次。例如只下载两层,那么使用 -l 2。

要是您想制作镜像站点,那么可以使用-m 参数,例如:

wget -m http://place.your.url/here

1、这时 wget 会自动判断合适的参数来制作镜像站点。此时,wget 会登录到服务器上,读入 robots.txt 并按 robots.txt 的规定来执行。

2、断点续传。当文件特别大或者网络特别慢的时候,往往一个文件还没有下载完,连接就已经被切断,此时就需要断点续传。wget 的断点续传是自动的,只需要使用 - c 参数,例如:

wget -c http://the.url.of/incomplete/file

使用断点续传要求服务器支持断点续传。- t 参数表示重试次数,例如需要重试 100 次,那么就写 -t 100,如果设成 -t 0,那么表示无穷次重试,直到连接成功。- T 参数表示超时等待时间,例如 -T 120,表示等待 120 秒连接不上就算超时。

3、批量下载。如果有多个文件需要下载,那么可以生成一个文件,把每个文件的 URL 写一行,例如生成文件 download.txt,然后用命令:wget -i download.txt 这样就会把 download.txt 里面列出的每个 URL 都下载下来。(如果列的是文件就下载文件,如果列的是网站,那么下载首页)

4、选择性的下载。可以指定让 wget 只下载一类文件,或者不下载什么文件。例如:

wget -m –reject=gif http://target.web.site/subdirectory

表示下载 http://target.web.site/subdirectory,但是忽略 gif 文件。–accept=LIST 可以接受的文件类型,–reject=LIST 拒绝接受的文件类型。

5、密码和认证。wget 只能处理利用用户名 / 密码方式限制访问的网站,可以利用两个参数:–http-user=USER 设置 HTTP 用户 –http-passwd=PASS 设置 HTTP 密码 对于需要证书做认证的网站,就只能利用其他下载工具了,例如 curl。

6、利用代理服务器进行下载。如果用户的网络需要经过代理服务器,那么可以让 wget 通过代理服务器进行文件的下载。此时需要在当前用户的目录下创建一个.wgetrc 文件。文件中可以设置代理服务器:http-proxy = 111.111.111.111:8080 ftp-proxy = 111.111.111.111:8080 分别表示 http 的代理服务器和 ftp 的代理服务器。如果代理服务器需要密码则使用:–proxy-user=USER 设置代理用户 –proxy-passwd=PASS 设置代理密码 这两个参数。使用参数–proxy=on/off 使用或者关闭代理。wget 还有很多有用的功能,需要用户去挖掘。

附录:

命令格式:

wget [参数列表] [目标软件、网页的网址]

  • -V,–version 显示软件版本号然后退出;
  • -h,–help 显示软件帮助信息;、
  • -e,–execute=COMMAND 执行一个“.wgetrc”命令
  • -o,–output-file=FILE 将软件输出信息保存到文件;
  • -a,–append-output=FILE 将软件输出信息追加到文件;
  • -d,–debug 显示输出信息;
  • -q,–quiet 不显示输出信息;
  • -i,–input-file=FILE 从文件中取得 URL;
  • -t,–tries=NUMBER 是否下载次数(0 表示无穷次)
  • -O –output-document=FILE 下载文件保存为别的文件名
  • -nc, –no-clobber 不要覆盖已经存在的文件
  • -N,–timestamping 只下载比本地新的文件
  • -T,–timeout=SECONDS 设置超时时间
  • -Y,–proxy=on/off 关闭代理
  • -nd,–no-directories 不建立目录
  • -x,–force-directories 强制建立目录
  • –http-user=USER 设置 HTTP 用户
  • –http-passwd=PASS 设置 HTTP 密码
  • –proxy-user=USER 设置代理用户
  • –proxy-passwd=PASS 设置代理密码
  • -r,–recursive 下载整个网站、目录(小心使用)
  • -l,–level=NUMBER 下载层次
  • -A,–accept=LIST 可以接受的文件类型
  • -R,–reject=LIST 拒绝接受的文件类型
  • -D,–domains=LIST 可以接受的域名
  • –exclude-domains=LIST 拒绝的域名
  • -L,–relative 下载关联链接
  • –follow-ftp 只下载 FTP 链接
  • -H,–span-hosts 可以下载外面的主机
  • -I,–include-directories=LIST 允许的目录
  • -X,–exclude-directories=LIST 拒绝的目录
wget 是 Linux 下的一个很有用的一个下载网上资源的命令。

wget 的使用形式是:

wget [参数列表] URL

首先来介绍一下 wget 的主要参数:
· -b:让 wget 在后台运行,记录文件写在当前目录下”wget-log”文件中;
· -t [nuber of times]:尝试次数,当 wget 无法与服务器建立连接时,尝试连接多少次
,比如”-t 120″表示尝试 120 次。当这一项为”0″的时候,指定尝试无穷多次直到连接成功为止,这个 设置非常有用,当对方服务器突然关机或者网络突然中断的时候,可以在恢复正常后继续 下载没有传完的文件;

·
-c:断点续传,这也是个非常有用的设置,特别当下载比较大的文件的时候,如果中
途意外中断,那么连接恢复的时候会从上次没传完的地方接着传,而不是又从头开始,使
用这一项需要远程服务器也支持断点续传,一般来讲,基于 UNIX/Linux 的 Web/FTP 服务器
都支持断点续传;
· -T [number of seconds]:超时时间,指定多长时间远程服务器没有响应就中断连接
,开始下一次尝试。比如”-T 120″表示如果 120 秒以后远程服务器没有发过来数据,就重新尝试连接。如果网络速度比 较快,这个时间可以设置的短些,相反,可以设置的长一些,一般最多不超过 900,通常 也不少于 60,一般设置在 120 左右比较合适;
· -w [number of seconds]:在两次尝试之间等待多少秒,比如”-w 100″表示两次尝试 之间等待 100 秒;
· -Y on/off:通过/不通过代理服务器进行连接;
· -Q [byetes]:限制下载文件的总大小最多不能超过多少,比如”-Q2k”表示不能超过 2K 字节,”-Q3m”表示最多不能超过 3M 字节,如果数字后面什么都不加,就表示是以字节为单 位,比如”-Q200″表示最多不能超过 200 字节;
· -nd:不下载目录结构,把从服务器所有指定目录下载的文件都堆到当前目录里;
· -x:与”-nd”设置刚好相反,创建完整的目录结构,例如”wget -nd http://www.gnu.org“将创建在当前目录下创建”www.gnu.org“子目录,然后按照服务器 实际的目录结构一级一级建下去,直到所有的文件都传完为止;
· -nH:不创建以目标主机域名为目录名的目录,将目标主机的目录结构直接下到当前目 录下;
· –http-user=username
· –http-passwd=password:如果 Web 服务器需要指定用户名和口令,用这两项来设定;
· –proxy-user=username
· –proxy-passwd=password:如果代理服务器需要输入用户名和口令,使用这两个选项;
· -r:在本机建立服务器端目录结构;
· -l [depth]:下载远程服务器目录结构的深度,例如”-l 5″下载目录深度小于或者等 于 5 以内的目录结构或者文件;
· -m:做站点镜像时的选项,如果你想做一个站点的镜像,使用这个选项,它将自动设 定其他合适的选项以便于站点镜像;
· -np:只下载目标站点指定目录及其子目录的内容。这也是一个非常有用的选项,我们 假设某个人的个人主页里面有一个指向这个站点其他人个人主页的连接,而我们只想下载 这个人的个人主页,如果不设置这个选项,甚至–有可能把整个站点给抓下来,这显然是我们通常不希望的;

ü 如何设定 wget 所使用的代理服务器
wget
可以使用用户设置文件”.wgetrc”来读取很多设置,我们这里主要利用这个文件来是
设置代理服务器。使用者用什么用户登录,那么什么用户主目录下的”.wgetrc”文件就起
作用。例如,”root”用户如果想使用”.wgetrc”来设置代理服务器,”/root/.wgert”就起
作用,下面给出一个”.wge trc”文件的内容,读者可以参照这个例子来编写自己的”wgetrc”文件:
http-proxy = 111.111.111.111:8080
ftp-proxy = 111.111.111.111:8080
这两行的含义是,代理服务器 IP 地址为:111.111.111.111,端口号为:80。第一行指定
HTTP 协议所使用的代理服务器,第二行指定 FTP 协议所使用的代理服务器。
利用 wget 配合 bash 脚本同时下载多个文件
先把需要下载的文件写入到一个文件中,命名为 urls.txt,比如:

http://www.xlhhy.cn/wp-content/uploads/2018/08/1198-16.jpg
http://www.xlhhy.cn/wp-content/uploads/2018/08/1197-16.jpg
http://www.xlhhy.cn/wp-content/uploads/2018/08/1196-16.jpg
http://www.xlhhy.cn/wp-content/uploads/2018/08/1195-16.jpg
http://www.xlhhy.cn/wp-content/uploads/2018/08/1188-16.jpg

再写一个 bash 脚本,如下:

while read url
do
wget -b "$url" -o /dev/null
done < urls.txt

或者是:wget -b -i url.txt

如果需要多次循环下载 urls.txt 中的文件,则如下(例子代表重复 20 次):

for ((i = 0; i < 20; i++))
do
    while read url
    do
    wget -b "$url" -o /dev/null
    done < urls.txt
done

有啥新玩法记得告诉我哦,嘿嘿

正文完
post-qrcode
 0
xiaolan
版权声明:本站原创文章,由 xiaolan 于2022-01-22发表,共计4646字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码