【问题标题】:What's the best way to save a complete webpage on a linux server?在 linux 服务器上保存完整网页的最佳方法是什么?
【发布时间】:2011-06-13 18:08:36
【问题描述】:

我需要在我的 linux 服务器上存档完整的页面,包括任何链接的图像等。寻找最佳解决方案。有没有办法保存所有资产,然后重新链接它们以在同一个目录中工作?

我曾考虑过使用 curl,但我不确定如何进行所有这些操作。另外,我可能需要 PHP-DOM 吗?

有没有办法在服务器上使用firefox并在地址加载后复制临时文件或类似的?

欢迎任何和所有输入。

编辑:

看起来 wget 似乎“不”会工作,因为需要渲染文件。我在服务器上安装了firefox,有没有办法在firefox中加载url,然后抓取临时文件并清除临时文件?

【问题讨论】:

  • 所有内容都是静态的,还是也有动态内容(PHP、JSP 等)?
  • 这是客户端 Web 应用程序的一部分,因此可能有任何内容。最好甚至使用 javascript 或 java 或类似的方式将当前浏览器状态发送到服务器,然后执行其他需要的操作。
  • 命令wget -p http://example.com保存必要的页面和对象,但不幸的是它不会改变路径。
  • 我发现这个问题很有用!

标签: linux curl save webpage wget


【解决方案1】:

wget 可以做到这一点,例如:

wget -r http://example.com/

这将反映整个 example.com 网站。

一些有趣的选项是:

-Dexample.com:不要关注其他域的链接
--html-extension:将text/html内容类型的页面重命名为.html

手册:http://www.gnu.org/software/wget/manual/

【讨论】:

  • 伙计们/女孩们,wget 正在获取完整的网站。我想给它一个页面并获取该页面的内容。我在这里错过了什么吗?
  • 使用-l 1;它将镜像限制为 1 级
  • wget -m 目前相当于-r -N -l inf --no-remove-listing
  • --html-extension 将从版本 1.12 开始弃用,应使用 --adjust-extension从 1.12 版开始,Wget 还将确保任何下载的 text/css 类型的文件都以 .css 后缀结尾,并且该选项已从 --html-extension 重命名,以更好地反映其新行为。旧的选项名称仍然可以接受,但现在应该被视为已弃用。
  • wget 已经完全无法使用了。
【解决方案2】:

使用以下命令:

wget -E  -k -p http://yoursite.com

使用-E 调整扩展。使用-k 转换链接以从您的存储中加载页面。使用-p 下载页面内的所有对象。

请注意,此命令不会下载指定页面中超链接的其他页面。表示该命令只下载正确加载指定页面所需的对象。

【讨论】:

  • 我尝试备份一些我喜欢的博客,但图像通常托管在我尝试获取的域之外。例如,在“theblogilike.com”中,很多照片都存储在“someotherdomain.com/photos”中。有没有可能解决这个问题?
  • 我找到了解决办法!通过添加选项“--span-host”,wget 将从指定域链接的域中获取数据。
【解决方案3】:

如果网页中的所有内容都是静态的,您可以通过 wget 之类的方式解决此问题:

$ wget -r -l 10 -p http://my.web.page.com/

或其一些变体。

由于您也有动态页面,因此通常无法使用wget 或任何简单的 HTTP 客户端来归档此类网页。正确的存档需要包含后端数据库和任何服务器端脚本的内容。这意味着正确执行此操作的唯一方法是复制支持服务器端文件。这至少包括 HTTP 服务器文档根目录和任何数据库文件。

编辑:

作为一种变通方法,您可以修改您的网页,以便具有适当权限的用户可以下载所有服务器端文件,以及支持数据库的文本模式转储(例如 SQL 转储)。您应该极度小心,避免通过此归档系统打开任何安全漏洞。

如果您使用的是虚拟主机提供商,它们中的大多数都提供某种 Web 界面,允许备份整个站点。如果您使用实际服务器,则可以安装大量备份解决方案,包括一些用于托管站点的基于 Web 的解决方案。

【讨论】:

    【解决方案4】:
    wget -r http://yoursite.com
    

    应该足够并抓取图像/媒体。您可以提供很多选择。

    注意:我相信wget 或任何其他程序都支持下载通过 CSS 指定的图像 - 所以您可能需要自己手动完成。

    这里可能有一些有用的论据:http://www.linuxjournal.com/content/downloading-entire-web-site-wget

    【讨论】:

    • wget 在与-p 开关一起使用时下载 HTML 或 CSS 内的任何图像。
    【解决方案5】:

    在 linux 服务器上保存完整网页的最佳方式是什么?

    我尝试了包括curlwget 在内的几个工具,但都没有达到我的预期。

    最后我找到了一个工具来保存一个完整的网页(图像、脚本、链接页面......包括所有内容)。它是用 rust 写的,名为monolith。采取look

    它不会将图像和其他脚本/样式表保存为单独的文件,而是将它们打包在 1 个 html 文件中。

    例如

    如果我必须将 https://nodejs.org/en/docs/es6 保存到 es6.html 中,并将所有页面必需品打包在一个文件中,那么我必须运行:

    monolith https://nodejs.org/en/docs/es6 -o es6.html
    

    【讨论】:

      猜你喜欢
      • 2011-01-17
      • 1970-01-01
      • 2011-11-20
      • 2016-08-05
      • 1970-01-01
      • 2015-07-13
      • 2010-09-09
      • 2013-04-27
      • 2015-10-23
      相关资源
      最近更新 更多