首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >镜像网站和维护URL结构

镜像网站和维护URL结构
EN

Stack Overflow用户
提问于 2013-08-14 07:22:46
回答 2查看 3.4K关注 0票数 3

目标

我想镜像一个网站,这样我就可以在任何地方(本地主机、S3等)托管静态文件。URL就会像原来的一样呈现给最终用户。

命令

这对于我的需求几乎是完美的(...but并不完全):

代码语言:javascript
复制
wget --mirror -nH -np -p -k -E -e robots=off http://mysite

这做了什么

  • --mirror:递归下载整个站点
  • -p:下载所有必要的页面要求
  • -k:将URL转换为相对路径,这样我就可以在任何地方托管它们

这做不到的

  • 防止重复下载
  • 保持(完全)相同的URL结构

问题所在

有些东西被下载不止一次,这就产生了myfile.htmlmyfile.1.html。这并不坏,只是当wget重写超链接时,它是用myfile.1.html版本编写的,该版本正在更改URL,因此需要考虑SEO (Google将索引难看的URL)。

-nc选项可以防止这种情况,但从wget-v1.13开始,我不能同时使用-k-nc。详细信息是这里

救命?!

我本来希望使用wget,但现在我正在考虑使用另一个工具,比如httrack,但我还没有任何经验。

任何关于如何实现这一点(使用wget,httrack或其他任何东西)的想法都将受到极大的赞赏!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-19 03:03:00

httrack让我有了很大的进展,它所做的唯一的错误就是让链接指向/folder/index.html而不是/folder/

使用httrackwget似乎不会产生完美的URL结构,因此我们最终编写了一个运行爬虫的bash脚本,然后使用sed清理了一些URL(从链接中裁剪index.html,用bla.html替换bla.1.html等等)。

票数 2
EN

Stack Overflow用户

发布于 2015-01-25 21:15:31

wget描述和帮助

根据这一点(以及我自己的一个快速实验),您应该可以使用-nc和-k选项一起收集您想要的页面。

导致问题的原因是在-N中使用-nc (根本不工作,不兼容),因此您将无法通过时间戳来比较文件,并且仍然无法对它们进行比较,并且使用-镜像选项,您本来就包含了-N。

不要使用-镜像,而是尝试用"-r -l inf“替换它,这将允许递归下载到无限级,但仍然允许您的其他选项工作。

举个例子,根据你的原作:

代码语言:javascript
复制
wget -r -l inf -k -nc -nH -p -E -e robots=off http://yoursite

注意:我建议使用-w 5-随机-等待-限制-速率=200 k,以避免DOSing服务器和不那么粗鲁,但显然取决于你。

一般来说,我尽量避免使用类似-镜像这样的选项分组,因为这样的冲突很难跟踪。

我知道这是一个很老的问题的答案,但我认为应该解决这个问题-- wget对我来说是一个新的命令,但到目前为止被证明是非常宝贵的,我希望其他人也会有同样的感觉。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18225548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档