使用wget命令下载网络资源

wget是GNU/Linux下的一个非交互式(non-interactive)网络下载工具,支持HTTP、HTTPS与FTP协议,并能够指定HTTP代理服务器。虽然wget命令与curl命令相比支持的协议并不多,且只能下载不能上传,其自身还是有一些很出色的特性的。例如,

  • 与很多下载工具不同,wget的下载任务可以在用户登出、断开连接的情况下在后台继续运行。当用户是远程登录到主机操作且有大量资源需要下载时,这个特性非常实用。

  • wget能够将网站服务器上的HTML、XHTML、CSS等文件全部下载下来,并在本地创建与服务器同样的目录结构,以及将下载网页中的链接转换为本地链接。这样一来,就可以实现网站页面的本地浏览。所以,用wget下载线上的软件文档非常方便。

  • wget支持断点续传,因而适用于网速较慢和连接不稳定的环境。

wget命令的控制参数比较多,下面对其中较为常用的部分予以介绍。

  • -c:执行断点续传。

  • -i file_name:可以将所有需要下载的链接都放入文件file_name中,然后wget则可以批量执行下载任务。

  • -r:执行递归下载。

  • -l recursion_level:指定递归下载的目录深度。-l 0则为不限制深度。

  • -np:递归下载时不要上升到父目录,即只限定在指定的网站目录内下载。

  • -H:递归下载时如果页面依赖外部网站资源,使该选项则可以对其下载。

  • -t retry_times:指定当连接中断时重新尝试连接的次数。-t 0则为无限次尝试重连。

  • -N:保留下载文件的时间戳。

  • -p:令wget下载HTML页面需要加载的所有相关文件,包括图片、声音、样式单等。

  • -k:令wget在下载任务结束后,将文件中的链接转为本地链接,从而适于本地页面浏览。

  • --proxy-user--proxy-password:指定代理服务器的用户名与密码。代理服务器的地址则可以在环境变量http_proxyftp_proxy中设定。

  • --no-remove-listing:在从FTP下载文件的过程中不移除包含远端服务器目录与文件列表信息的.listing临时文件。该文件可用于核验是否完成了对所有文件的下载。

  • -m:该选项适用于完整地镜像一个站点。其等价于-r -N -l inf --no-remove-listing,即含义为:无限深度递归下载,保留源文件的时间戳,并保留.listing文件。

将上述参数进行有机组合,则可以实现我们期望的任何下载任务了。例如,使用如下命令下载整个网站用于本地浏览。

 $ wget -c -r -l 0 -t 0 -p -np -k -H https://plus.maths.org/content/

本文对wget命令的介绍就到这里。感兴趣的朋友可以在自己的GNU/Linux系统上尝试一下。Windows用户亦可以在Cygwin下运行wget。

posted @ 2019-04-21 11:21  皮波迪先生  阅读(4086)  评论(0编辑  收藏  举报