【问题标题】:How do I completely mirror a web page?如何完全镜像网页?
【发布时间】:2010-09-28 21:26:16
【问题描述】:

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

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

再澄清一点...我有大约 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 页面。

【问题讨论】:

  • 这里有很多不清楚的地方。您有权访问服务器吗?如果是这样,那么有比您建议的通过网络客户端进行粗暴文件复制更好的方法。如果没有,你在做什么从不是你自己的服务器上抓取和发布内容?请提供细节;它会帮助我们回答。
  • 我没有刮任何东西。我想做我所描述的。我想完全镜像来自几个不同站点的特定网页,以便我可以在本地阅读它们。我描述了使用 Firefox 的功能。 Safari 也有同样的功能。

标签: perl wget mirror


【解决方案1】:

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

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

祝你好运,:)

【讨论】:

    【解决方案2】:

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

    http://www.httrack.com/

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 谢谢。可以分享一下脚本吗?
      • 对不起,我没有了。这只是快速而肮脏的东西。它只适用于非常特定的 Opera 版本。
      【解决方案4】:

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

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

      吉姆

      【讨论】:

        【解决方案5】:

        我用WebReaper

        【讨论】:

        【解决方案6】:

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

        wget -r -p -np -k URL
        

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

        • LWP::简单

        • WWW::机械化

        【讨论】:

        • 我正在尝试编辑您的帖子,但更改少于 6 个字符:“孔”(表示实体中的空心位置)应为“整体”(表示全部或完整) .
        【解决方案7】:

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

        或者你的意思可能是别的。

        【讨论】:

        • 从问题中可以清楚地看出他想要网站的静态快照。
        【解决方案8】:

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

        【讨论】:

          【解决方案9】:

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

          也许研究一下 SQUID 之类的东西?很确定它可以做到。

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

          【讨论】:

            猜你喜欢
            • 2011-10-19
            • 1970-01-01
            • 2019-06-06
            • 2010-11-11
            • 1970-01-01
            • 1970-01-01
            • 2014-01-19
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多