wget抓取整站做本地镜像
常用命令

phpweb企业成品网站系统有600多套比较成熟的、可以直接拿来使用的、中文的PHP企业展示网站。
我从网上下载了这600多套源代码, 发现后台源程序是经过 zend加密的, 且不说能不能无障碍解密,我只对后台PHP代码的兴趣远远小于对于这600多套前端模板的兴趣。
上次用python把模板之家的2000套纯HTML前端模板都下载到硬盘了, 这次也打算把这600多套企业成品网站收纳到硬盘。
既然后端源码不开源, 那就把每套网站的前端镜像保存到本地。
linux内置的wget工具强大到我不会使用,
下面是在网上找的下载整站做镜像的命令,但是有两个问题:
1、不能转换绝对URL地址到本地相对URL:
比如, wordpress页面生成的地址都不是相对链接,如: http://www.nolazy.net/?p=260
这样下载到本地的HTML文件,实质上还是指向了www.nolazy.net的页面
2、即使被抓网站使用的全是相对链接,如:/?p=260 /index.html?p=2
下载到本的文件名可能就是?p=260 index.html?p=2
这样的文件名在URL中是无法正确访问的.
wget -m -e robots=off -U "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6" "http://www.nolazy.net/"
解决办法
经过查看wget的使用说明,加上多次尝试,得出下面一个简洁、完善的方法,可解决上述两个问题:
wget -m -e robots=off -k -E "http://www.nolazy.net/"
可将我的博客全站下载以本地,生成可访问、完整的镜像。
简单解释一下:
-m //是镜像的意思 -e robots=off //忽略robots协议,强制、流氓抓取 -k //将绝对URL链接转换为本地相对URL -E //将所有text/html文档以.html扩展名保存