由于我使用的 Discourse 论坛将在几周后下线,因此我开始归档该网站。我进行了大量研究、试错,并找到了一个使用 HTTrack 的简单解决方案。以下是我学到的一切。
使用 HTTrack 归档 Discourse 站点
对于 Windows 用户来说,最好的解决方案似乎是 HTTrack。这个工具效果很好,它将网站归档为 HTML 文件。所有类别、主题和帖子都已归档,包括所有带有相对导航链接的页面。
HTTrack 的基本教程在这里:https://fossbytes.com/download-website-offline-access-using-httrack-use-website-without-internet/。我保留了默认设置,并进行了以下自定义设置:
- 网站地址:
https://forums.gearboxsoftware.com/c/homeworld/https://forums.gearboxsoftware.com/c/homeworld-dok/
- 扫描规则:
-gearboxsoftware.com/* -forums.gearboxsoftware.com/* +forums.gearboxsoftware.com/c/homeworld/* +forums.gearboxsoftware.com/c/homeworld-dok/* +forums.gearboxsoftware.com/t/* +forums.gearboxsoftware.com/user_avatar/* +sea2.discourse-cdn.com/*
- 浏览器 ID(又名用户代理):
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
注意:存在一个 CSS 问题,导致类别链接无法正常工作,但这可以按下面所述轻松修复。
CSS 问题
当以 googlebot 的身份查看类别页面时,主题链接不起作用。例如:https://web.archive.org/web/20220731051419/https://forums.gearboxsoftware.com/c/homeworld/57。
这使得在 HTTrack、archive.org 和 google catch 中无法导航类别页面。这似乎是 Discourse 在 CSS 文件中的一个问题。要修复链接,只需阻止/删除以下 CSS 文件:
stylesheets/desktop_theme_10_1965d1d398092f2d9f956b36e08b127e00f53b70.css?__ws=forums.gearboxsoftware.com
@codinghorror - 你们能解决这个问题吗?
挑战
我遇到了以下挑战,并在大量试错后最终克服了它们。
- Discourse 页面是使用 JavaScript 动态生成的。这使得大多数存档/爬虫工具的效果不佳。
- 大多数主题只加载前约 20 个帖子,其余帖子在滚动时才会出现。按 Ctrl+P 会加载一个显示所有帖子的“打印”页面。用户每小时只能打印 5 页,但 Discourse 网站管理员可以增加此限制。
- Adrelanos 指出,HTTrack 未能正确归档多页主题,但我怀疑这个问题是由于他的 HTTrack 设置造成的,因为我没有遇到这个问题。
- 将页面保存为 PDF 不会包含任何折叠的详细信息部分。
- 通过在 URL 末尾添加
?_escaped_fragment_可以以基本 HTML 加载页面,但这仅适用于主题,不适用于类别。
一旦您了解到所有 Discourse 页面/内容都可以正确渲染为 HTML 以供爬虫使用,上述挑战就不再是问题。要做到这一点,您必须将爬虫/浏览器的用户代理更改为 googlebot,以获取页面的 HTML 版本。
Archive.org
如果您使用 web.archive.org 上的“立即保存页面”功能,它将归档 Discourse 的 JavaScript 版本,效果不佳。Archive.org 使用请求存档的人的用户代理。因此,您必须将用户代理更改为 googlebot。您可以获取一个名为“User-Agent Switcher for Chrome”的 Chrome 扩展程序。在选项中添加:
- 名称:Googlebot
- 字符串:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) - 组:Chrome
- 指示符标志:1
替代存档工具
此处列出了许多工具:Archive an old forum "in place" to start a new Discourse forum
我还简要测试了 Cyotek WebCopy、A1 Website Download 和 WAIL 等 GUI 工具。
命令行工具包括 mcmcclur 的工具和 wget。wget 的教程在这里:https://letswp.justifiedgrid.com/download-discourse-forum-wget/。
但是,对于 Windows 用户来说,最好的解决方案似乎是 HTTrack。
注意:由于我是新用户,我最多只能在帖子中添加两个链接。因此,我将一些链接变成了预格式化文本。