2

我在几个不同的网站上有几个网页,我想完全镜像。这意味着我需要图像、CSS 等,并且需要转换链接。此功能类似于使用 Firefox 来“将页面另存为”并选择“网页,完成”。我想将文件和相应的目录命名为合理的名称(例如 myfavpage1.html、myfavpage1.dir)。

我无权访问服务器,它们不是我的页面。这是一个示例链接:点击我!

再澄清一点...我有大约 100 个页面要镜像(许多来自慢速服务器),我将在 Solaris 10 上执行任务,并每小时将结果转储到 samba 挂载以供人们查看。而且,是的,我显然已经用几个不同的标志尝试了 wget,但我没有得到我正在寻找的结果。因此,指向 GNU wget 页面并没有真正的帮助。让我从一个简单的例子开始。

wget --mirror -w 2 -p --html-extension --tries=3 -k -P stackperl.html "https://stackoverflow.com/tags/perl"

由此,如果我的标志正确,我应该会在 stackper.html 文件中看到https://stackoverflow.com/tags/perl页面。

4

9 回答 9

7

如果您只是想运行命令并获取网站的副本,请使用其他人建议的工具,例如wgetcurl或一些 GUI 工具。我使用我自己的个人工具,我称之为webreaper(虽然那不是 Windows WebReaper。我知道一些 Perl 程序,包括webmirror和其他一些你可以在CPAN上找到的程序。

如果您希望在您正在编写的 Perl 程序中执行此操作(因为您的答案中有“perl”标签),CPAN中有许多工具可以在每个步骤中为您提供帮助:

祝你好运, :)

于 2008-12-30T18:17:00.600 回答
4

对于您的站点的 HTML 化版本,您可以使用 WinHTTrack - 一个免费的开源 GPL 程序。它将拉下您的页面、图形、文档、zip 文件、电影等的预渲染版本......当然,由于这是一个镜像副本,因此任何动态后端代码(例如数据库调用)将不再是动态的。

http://www.httrack.com/

于 2008-12-30T17:46:13.797 回答
3

就我个人而言,上次我有这样做的冲动时,我编写了一个 python 脚本,它复制了我的浏览器缓存,然后手动访问了我希望镜像的所有页面。一个非常丑陋的解决方案,但它具有不触发任何“不要刮我的页面”警报的好处。多亏了Opera的链接标签栏,“手动”下载数以万计的页面并不像您想象的那么难。

于 2008-12-30T17:55:56.523 回答
2

我使用WebReaper

于 2008-12-30T17:52:37.247 回答
2

我会回应“不清楚”的评论。这些网页/站点是您创建的,并且您希望将它们部署在多台服务器上吗?如果是这样,请在您的 HTML 中使用相对引用,您应该没问题。或者,在您的网站中使用 a 并在每个站点上进行调整。但是,相对论确实是要走的路。

或者,您是说您想下载网站(如 Stack Overflow 主页、perl.com 等)以在您的计算机上拥有本地副本?我同意丹尼尔的观点——使用 wget。

吉姆

于 2008-12-30T17:53:05.640 回答
2

您可以使用 wget gnu 工具来抓取整个站点,如下所示:

wget -r -p -np -k URL

或者,如果您使用 perl,请尝试以下模块:

  • LWP::简单

  • 万维网::机械化

于 2012-07-17T00:30:07.020 回答
0

在大多数现代网站中,前端只讲述了故事的一小部分。不管剥离 html、css 和 javascript 的工具是什么,您仍然会缺少服务器中包含的核心功能。

或者,也许你的意思是别的。

于 2008-12-30T17:37:28.323 回答
0

如果 wget 很复杂,或者你没有 linuxbox,你总是可以使用 WebZip

于 2008-12-30T18:17:26.167 回答
0

听起来您想要一个好的代理服务器提供的缓存功能。

也许看看像SQUID这样的东西?很确定它可以做到。

这更像是一个系统管理员类型的问题,而不是编程问题。

于 2009-09-02T11:47:47.533 回答