如何完全镜像一个网页?

3
我有几个不同网站上的网页需要完全镜像。这意味着我需要包括图片、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页面。


在大多数现代网站中,前端只是故事的一小部分。无论使用什么工具来剥离HTML、CSS和JavaScript,您仍将缺少包含在服务器上的核心功能。或者也许您指的是其他内容。 - Bobby Borszich
这里有很多不清楚的地方。你有访问服务器的权限吗?如果有,那么比起你建议的通过 Web 客户端进行暴力文件复制,有更好的方法。如果没有,那你为什么要从非自己的服务器上爬取和发布内容?请提供具体信息;这会帮助我们作出回答。 - bradheintz
我没有进行网络爬取。我的想法就是像我之前所描述的那样,完全地镜像一些特定网站上的页面以便我能够在本地阅读它们。我使用Firefox来描述这个功能,但是Safari也具备相同的功能。 - anon
7个回答

8
如果你只是想运行命令并获取网站的副本,请使用其他人建议的工具,如wgetcurl或一些GUI工具。我使用自己的个人工具,称为webreaper(不是Windows的WebReaper)。我知道几个Perl程序,包括webmirror和一些其他程序,你可以在CPAN上找到。
如果你正在编写Perl程序并想在其中完成此操作(因为你在答案中使用了“perl”标签),那么CPAN中有许多工具可以帮助你完成每个步骤:

祝好运,:)


5

如果想要将您的网站制作成HTML格式,您可以使用WinHTTrack——一个免费、开源、遵循GPL协议的程序。它可以下载您网页的预渲染版本、图片、文档、压缩文件、电影等等。当然,由于这只是一个镜像副本,任何动态后端代码(如数据库调用)都不会再是动态的。

http://www.httrack.com/


3
个人而言,上一次我有这种冲动时,我编写了一个 Python 脚本,它复制了我的浏览器缓存,然后手动访问了所有我想镜像的页面。这是一个非常丑陋的解决方案,但它有一个好处,不会触发任何“不要抓取我的页面”的警报。由于Opera的链接标签栏,手动下载成千上万个页面并没有你想象的那么难。

谢谢。你能分享脚本吗? - nealmcb
抱歉,我已经没有了。这只是一个快速而简单的东西;它只能在非常特定的Opera版本上运行。 - Brian

3
你可以使用wget GNU工具来获取整个站点,例如:

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

wget -r -p -np -k URL

如果您使用Perl,可以尝试以下模块:

  • LWP::Simple

  • WWW::Mechanize


1
我正在尝试编辑您的帖子,但更改少于6个字符:"hole"(指固体物体中的空洞)应为"whole"(表示全部或完整)。 - Joseph Hansen

2

有趣的是,这正是我为我创建的命令行工具使用的相同名称 - http://search.cpan.org/~bdfoy/webreaper-0.31/webreaper - brian d foy

0
如果wget太复杂或者你没有Linux系统,你可以使用WebZip。

-1

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接