如何使用wget

wget下载资源

比如说要下载好的在线资源,可以用wget命令:

$ wget -r -p -k -np http://tengine.taobao.org/book/ 
$ wget -r -p -k -np http://light4.github.io/Linux-C/index.html

下载git-pro中文版时,遇到错误: Connecting to |216.34.181.97|:80... failed: Connection refused.。可能是G F W的作用,因此需要使用代理,只需要设置:

$ export http_proxy='127.0.0.1:8087' #GAE代理

重试则可以下载成功,但是编码错误:

zsh➜ $ wget -r -p -k -np http://git-scm.com/book/zh/起步 
--2013-04-08 14:21:43-- http://git-scm.com/book/zh/%E8%B5%B7%E6%AD%A5 
正在连接 127.0.0.1:8087... 已连接。 
已发出 Proxy 请求,正在等待回应... 200 
长度: 17487 (17K) [text/html] 
....

加上--restrict-file-names=nocontrol参数就可以了。

另外在下载learn.jquery.com完成后,在首页打开event时,链接转换为file:///home/zhaofei/Documents/learn.jquery.com/index.html?page_id=13, 实际上,浏览器在载入文件时忽略链接中的查询字串(也就是?page_id=13),因此打开的仍然是index.html。这时候加上--restrict-file-names=windows,转换为本地连接时将?转换为其他字符。

wget 帮助手册

man wget

wget是免费的网页下载工具,支持HTTP、HTTPS、FTP协议,同时还支持http代理。wget支持递归抓取页面,可以爬取HTML、XHTML、CSS,同时转换页面内链接地址,允许在没网的情况下浏览网站,因此是备份网站的强大工具。 wget遵守Robot Exclusion Standard (/robots.txt)。

上面各个选项含义:

  • -r(–recursive): 递归下载页面,默认深度为5
  • -p(–page-requisites): 下载页面中的所有资源,包括图片,声音,css等。
  • -k(–convert-links): 下载完成后,转换链接地址,方便本地浏览。
  • -np(–no-parent): 递归下载只往下搜索链接,不会下载父目录页面。
  • –restrict-file-names=nocontrol: 设置转换链接地址时需要转换的字符集。默认情况下,wget转换系统文件名不允许的字符和不可显示的字符。值可以为unix, windows, nocontrol, ascii, lowercase, and uppercase.

Mac 下可以使用SiteSucker备份网站,SiteSucker简单易用同时又很强大,setting里面有许多选项可以设置,比如不下载指定文件类型等。

参考

Nginx 开发从入门到精通
How to Fix wget Connection Refused Error when I’m behind a Proxy
解决wget下载文件名乱码的一些方法
Escaping query strings with wget –mirror