目标
我想镜像一个网站,这样我就可以在任何地方(本地主机、S3等)托管静态文件。URL就会像原来的一样呈现给最终用户。
命令
这对于我的需求几乎是完美的(...but并不完全):
wget --mirror -nH -np -p -k -E -e robots=off http://mysite这做了什么
--mirror:递归下载整个站点-p:下载所有必要的页面要求-k:将URL转换为相对路径,这样我就可以在任何地方托管它们这做不到的
问题所在
有些东西被下载不止一次,这就产生了myfile.html和myfile.1.html。这并不坏,只是当wget重写超链接时,它是用myfile.1.html版本编写的,该版本正在更改URL,因此需要考虑SEO (Google将索引难看的URL)。
-nc选项可以防止这种情况,但从wget-v1.13开始,我不能同时使用-k和-nc。详细信息是这里。
救命?!
我本来希望使用wget,但现在我正在考虑使用另一个工具,比如httrack,但我还没有任何经验。
任何关于如何实现这一点(使用wget,httrack或其他任何东西)的想法都将受到极大的赞赏!
发布于 2013-08-19 03:03:00
httrack让我有了很大的进展,它所做的唯一的错误就是让链接指向/folder/index.html而不是/folder/。
使用httrack或wget似乎不会产生完美的URL结构,因此我们最终编写了一个运行爬虫的bash脚本,然后使用sed清理了一些URL(从链接中裁剪index.html,用bla.html替换bla.1.html等等)。
发布于 2015-01-25 21:15:31
wget描述和帮助
根据这一点(以及我自己的一个快速实验),您应该可以使用-nc和-k选项一起收集您想要的页面。
导致问题的原因是在-N中使用-nc (根本不工作,不兼容),因此您将无法通过时间戳来比较文件,并且仍然无法对它们进行比较,并且使用-镜像选项,您本来就包含了-N。
不要使用-镜像,而是尝试用"-r -l inf“替换它,这将允许递归下载到无限级,但仍然允许您的其他选项工作。
举个例子,根据你的原作:
wget -r -l inf -k -nc -nH -p -E -e robots=off http://yoursite注意:我建议使用-w 5-随机-等待-限制-速率=200 k,以避免DOSing服务器和不那么粗鲁,但显然取决于你。
一般来说,我尽量避免使用类似-镜像这样的选项分组,因为这样的冲突很难跟踪。
我知道这是一个很老的问题的答案,但我认为应该解决这个问题-- wget对我来说是一个新的命令,但到目前为止被证明是非常宝贵的,我希望其他人也会有同样的感觉。
https://stackoverflow.com/questions/18225548
复制相似问题