Wget入门使用教程
概述
简介
Wget是Linux系统下的一款工具,用于从远程服务器恢复备份到本地服务器,支持HTTP,HTTPS和FTP协议,可以使用 HTTP 代理服务器(对安全强度很高的系统而言,一般不会将自己的系统直接暴露在互联网上,所以支持代理是下载软件必须有的功能)。所谓的自动下载是指,Wget可以在用户退出系统的之后在后台执行。这意味这你可以登录系统,启动一个Wget下载任务,然后退出系统,Wget将在后台执行直到任务完成。
Wget可以跟踪HTML页面上的链接依次下载来创建远程服务器的本地版本,完全重建原始站点的目录结构。这又常被称作”递归下载”。在递归下载的时候,Wget遵循Robot Exclusion标准(/robots.txt)。Wget可以在下载的同时,将链接转换成指向本地文件,以方便离线浏览。
Wget在带宽很窄的情况下和不稳定网络中有很强的适应性。如果是由于网络的原因下载失败,Wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定链接时间的服务器上下载大文件非常有用。即断点续传功能。
安装
Linux
# 编译安装wget,需先下载得到压缩包
tar zxvf wget-1.9.1.tar.gz
cd wget-1.9.1
./configure
make
make install
Windows
下载地址,下载得到一个exe文件,一步步 next 即可。
设置环境变量GNU_HOME
:GNU_HOME=C:\Program Files (x86)\GnuWin32
在Path 环境变量中添加:%GNU_HOME%\bin
,然后就可以使用Wget命令。
使用
命令参数
wget的参数较多,常用参数:
- -r 递归;对于HTTP主机,wget首先下载URL指定的文件,然后(如果该文件是一个HTML文档的话)递归下载该文件所引用(超级连接)的所有文件(递归深度由参数-l指定)。对FTP主机,该参数意味着要下载URL指定的目录中的所有文件,递归方法与HTTP主机类似。
- -N 时间戳:该参数指定wget只下载更新的文件,也就是说,与本地目录中的对应文件的长度和最后修改日期一样的文件将不被下载。
- -m,镜像,相当于同时使用-r和-N参数。
- -l,设置递归级数,默认为5。
-l1
相当于不递归;-l0
为无穷递归;当递归深度增加时,文件数量将呈指数级增长 - -t,设置重试次数。当连接中断(或超时)时,wget将试图重新连接。
-t0
则重试次数设为无穷多 - -c,指定断点续传功能,wget默认具有断点续传功能,只有当你使用别的ftp工具下载了某一文件的一部分,并希望wget接着完成此工作的时候,才需要指定此参数。
举例:wget -m -l4 -t0 http://www.quany.info/
将在本地硬盘建立http://www.quany.info/的镜像,镜像文件存入当前目录下一个名为www.quany.info的子目录中(你也可以使用-nH参数指定不建立该子目录,而直接在当前目录下建立镜像的目录结构),递归深度为4,重试次数为无穷(若连接出现问题,wget将坚韧不拔地永远重试下去,直到任务完成!) - -A acclist / -R rejlist:
这两个参数用于指定wget接受或排除的文件扩展名,多个名称之间用逗号隔开。假设不想下载MPEG和.AU文件:-R mpg,mpeg,au
其它参数还有: - -L 只扩展相对连接,该参数对于抓取指定站点很有用,可以避免向宿主主机的其他目录扩散。例如,某个人网站地址为:http://www.quany.info/~ppfl/,使用如下命令行:
wget -L http://www.quany.info/~ppfl/
则只提取该个人网站,而不涉及主机www.quany.info上的其他目录。 - -k 转换连接:HTML文件存盘时,将其中的非相对连接转换成为相对连接。
- -X 在下载FTP主机上的文件时,排除若干指定的目录
另外,下面参数用于设置wget的工作界面: - -v 设置wget输出详细的工作信息。
- -q 设置wget不输出任何信息。
ftp下载:wget ftp://<user>:<passwd>@www.quany.info/xxx.zip
http下载:wget --http-user=<user> --http-passwd=<passwd> http://www.quany.info/xxx.zip
实例
- wget默认会以最后一个符合”/”的后面的字符来命令,对于动态链接的下载通常文件名会不正确。
wget http://www.minjieren.com/download?id=1080
- 使用wget –limit -rate限速下载,使用wget -O下载并以不同的文件名保存,wget -c断点续传,-b后台下载:
wget -O wordpress.zip -c -b --limit-rate=300k http://www.minjieren.com/wordpress-3.1-zh_CN.zip
执行Wget时,默认会占用全部可能的宽带下载。 - 伪装代理名称下载
命令:
wget --user-agent=“Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16” http://www.minjieren.com/wordpress-3.1-zh_CN.zip
说明:有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。不过你可以通过–user-agent参数伪装。
实例7:使用wget –spider测试下载链接
命令:wget --spider URL
说明:当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。我们可以增加–spider参数进行检查。
wget --spider URL
如果下载链接正确,将会显示
wget --spider URL
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled – not retrieving.
这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误
wget --spider url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 404 Not Found
Remote file does not exist – broken link!!!
你可以在以下几种情况下使用spider参数:
定时下载之前进行检查
间隔检测网站是否可用
检查网站页面的死链接
使用wget –tries增加重试次数
命令:wget --tries=40 URL
说明:wget默认重试20次连接下载文件。如果需要,你可以使用–tries增加重试次数。
实例9:使用wget -i下载多个文件
命令:wget -i filelist.txt
说明:
首先,保存一份下载链接文件
cat > filelist.txt
url1
url2
url3
url4
接着使用这个文件和参数-i下载
实例10:使用wget –mirror镜像网站
命令:wget --mirror -p --convert-links -P ./LOCAL URL
说明:
下载整个网站到本地。
–miror:开户镜像下载
-p:下载所有为了html页面显示正常的文件
–convert-links:下载后,转换成本地的链接
-P ./LOCAL:保存所有文件和目录到本地指定目录
实例11:使用wget –reject过滤指定格式下载
命令:wget --reject=gif ur
说明:下载一个网站,但过滤掉特定类型文件。
实例12:使用wget -o把下载信息存入日志文件
命令:wget -o download.log URL
说明:不希望下载信息直接显示在终端而是在一个日志文件,可以使用
实例13:使用wget -Q限制总下载文件大小
wget -Q5m -i filelist.txt
说明:当你想要下载的文件超过5M而退出下载。这个参数对单个文件下载不起作用,只能递归下载时才有效。
实例14:使用wget -r -A下载指定格式文件
命令:wget -r -A.pdf url
说明:可以在以下情况使用该功能:下载一个网站的所有图片或者视频、PDF文件
实例15:使用wget FTP下载
命令:wget ftp-url或者wget --ftp-user=USERNAME --ftp-password=PASSWORD url
说明:可以使用wget来完成ftp链接的下载。
使用wget匿名ftp下载:wget ftp-url
使用wget用户名和密码认证的ftp下载:wget --ftp-user=USERNAME --ftp-password=PASSWORD url