人类 wildgun 写的前言:这篇文章是我用 ChatGPT 辅助写作的。主要是我用语音(高级语音模式)告诉 ChatGPT 我对于日常浏览网页并需要保存下网页内容时,会用到的几种方法,并告诉它我会根据不同目的、不同使用场景来区分使用。在传达我的意思后,再与 ChatGPT 稍加讨论,之后请它补充信息,并生成一篇博客文章。下面的内容主要是由 ChatGPT 生成的,我也进行了一些补充、编辑——比如每一种保存方式下的「4. 是否防失效」就是我事后补充的,因为聊天的时候没想道。
在日常的浏览和研究过程中,我们常常需要保存网页内容以供日后参考。然而,不同的保存方式在具体应用场景中有各自的优劣。本文将详细介绍几种常见的网页保存方法,并从几个重要角度进行比较,包括是否便于后续编辑、是否具有公正性(防伪性),以及是否能够保存用户定制的内容。
第一种方法:浏览器插件保存至本地笔记
工具与方法
使用浏览器插件将网页保存至本地笔记工具是当前较为流行的方式之一。常用的工具包括 Evernote (印象笔记)、 Notion 等。这些插件可以将网页内容一键保存至你的个人笔记本中,且通常允许你对内容进行编辑、标注、分类等操作。
使用场景与优劣分析
- 便于后续编辑:这一方法特别适合需要频繁访问和编辑网页内容的人群。你可以对保存的网页内容进行标注、添加标签或进行详细分类,方便后续整理和查找。对于研究者、学生或需要进行长期知识管理的用户来说,这种方式非常实用。
- 公正性与防伪性:由于保存内容可以被编辑,这种方式在公正性上稍显不足。如果需要向第三方展示内容,可能会被质疑为不具备防伪性,因为保存者有可能在后续修改内容。
- 用户定制信息的保存:这种方法能够保存你在登录状态下看到的个性化内容,包括关注的人的动态、推荐内容等。因此,它适合保存基于个人账户或定制设置生成的网页内容。
- 是否防失效:通常保存于个人笔记软件中的内容可以直接访问。但一些云笔记软件或基于在线网页方式的笔记软件,在极其偶然的情况下会出现笔记丢失。以及如果公司一旦停止服务运营,也可能导致后续无法访问。所以最保险的还是保存为本地离线文件 + 自己多备份。
第二种方法:利用互联网存档服务
工具与方法
互联网存档服务(如 Wayback Machine )或
archive.today 提供了一种将网页内容保存至第三方服务器的方式。通过这些服务,你可以保存网页在特定时间点的完整副本,并且这些内容通常是公开可访问的。
使用场景与优劣分析
- 便于后续编辑:这种方法并不适合频繁编辑,因为存档内容一旦保存便不可更改。因此,它更适合用于需要保持网页原始状态的场景。
- 公正性与防伪性:互联网存档服务的最大优势在于其防伪性。由于内容由第三方存储,且无法被修改,因此具有较高的可信度。这种方式非常适合保存需要向第三方展示的内容,尤其是在需要作为法律证据或公共记录保存时——司法机关认不认这就令当别论了。因此,以这种方式的保存的公正性是来源是这几个网站本身。
- 用户定制信息的保存:由于互联网存档服务通常以匿名者身份访问网页,因此无法保存登录状态下的个性化内容。存档的网页内容仅限于公开的部分,不能保存你个人定制的内容或推荐信息。
- 是否防失效:在以下 3 种情况下,这样的存档可能会失效。一、这些存档网站服务本身停止了;二、需要查看的人与这些存档网站服务之间网络被阻断;三、不记得保存的 URL 了(比如所保存网页的 URL 里有很长的随机字符串)。所以用这种第三方存档机构保存网页,很重要的一点是记录下你所保存的超链接( URL )字符串。
第三种方法:网页截图与保存为 PDF
工具与方法
网页截图和保存为 PDF 是两种简单且直接的网页保存方式。截图可以通过操作系统自带的功能或专门的截图工具实现,而保存为 PDF 则通常通过浏览器自带的「打印为 PDF 」功能完成。
使用场景与优劣分析
- 便于后续编辑:网页截图和 PDF 都不太适合后续编辑。截图只能保留网页的视觉外观,无法编辑其中的内容。而 PDF 虽然保留了文本和图片,但编辑起来也较为不便。
- 公正性与防伪性:
在展示内容时,截图和 PDF 文件通常具备较好的防伪性,尤其是在截图过程中,如果网页包含时间戳或其他不可更改的元素,可以作为有效证据。(以上是 ChatGPT 写的)我觉得截图本身不具有公正性,因为图片本身以及浏览器的开发者工具都可以对网页进行一定程度的内容编辑。并且,它们无法像互联网存档那样全面保留网页的交互元素或动态内容。 - 用户定制信息的保存:截图和 PDF 保存可以捕捉你在登录状态下看到的所有内容,因此能够保存个性化信息。但它们不适合保存动态加载的内容,可能会遗漏部分信息。
- 是否防失效:保存为本地离线文件,并且做好文件备份,就能够防止失效。
第四种方法: SingleFile 插件保存动态内容
工具与方法
SingleFile 是一款能够保存网页动态加载内容的浏览器插件。与普通保存方法不同,它可以捕捉并保存AJAX加载的图片、视频等资源,从而确保网页的完整性。(人类 wildgun 注:这款插件也是这几天我在一次向 ChatGPT 提问时被它推荐的。目前试了部分网站,有些网站能保存下动态加载元素,有些网站似乎不太行。)
链接: SingleFile 的 Firefox 插件、 Chrome 插件、 Github 页
使用场景与优劣分####
- 便于后续编辑: SingleFile 主要用于保存网页内容,虽然它不提供直接的编辑功能,但你可以通过其他工具对保存的内容进行管理。因此,它的编辑灵活性介于浏览器插件和 PDF 之间。
- 公正性与防伪性:
SingleFile 保存的内容相对固定,不易篡改,因此在一定程度上也具备防伪性。虽然它不像互联网存档那样由第三方托管,但仍然适合用于保存需要保持完整性的信息。我觉得凡事保存在本地的就没有什么公正性可言的,都是用户可编辑的。 - 用户定制信息的保存:与其他浏览器插件类似, SingleFile 可以保存登录状态下的个性化内容,并且能够捕捉动态加载的资源。这使得它在保存复杂网页时非常有用。
- 是否防失效:这也是一种保存为本地文件的保存网页方式,因此做好自己的备份操作,就能长久保存。
结语
在选择网页保存方式时,了解每种方法的优势和局限性至关重要。无论是需要频繁编辑内容、确保内容公正性,还是保存个性化信息,都可以根据具体需求选择最合适的保存方式。通过合理应用这些工具,我们可以更有效地管理和保存重要的网页内容。
希望这篇文章能帮助你在不同的场景下选择合适的网页保存方法,实现最佳的使用效果。
我用过右键另存,还有纯文本直接粘贴到记事本,富文本粘贴到 Word。各有各的问题。重要的是都不能保存网页在服务器上的修改时间属性,还有不能递归抓取整个站点或某个目录下的内容。
直到我用 WSL 运行 wget 并用 –recursive 参数。当时用这种方法把 http://mowypan.com/ 整个站点备份了一份到本地。(可是该死的 Linux 不支持设置创建时间属性,HTTP 似乎也不支持创建时间,修改时间的精确度也只有 1 秒。)
至于 URL 是目录名结尾的页面就似乎没办法正确获取文件名了。只能手动结尾加 /index.htm 验证然后手动改名。
感谢回复,你提到的命令行的递归下载方式我是没想到的。
就该命令我去问了一下 ChatGPT ,同时,我也特别关注了「动态加载内容」和「仅出现在搜索返回结果中的链接」这两种类型的页面,能否通过你提到的 wget 的 –recursive 参数抓取这个问题上。
ChatGPT 给我的回答是这两种情况都不行。不知道你自己的体验是如何的呢?
以下是 ChatGPT 给我的回答:
————————
你提到的两种情况都是比较常见的场景,下面我分别解释一下 wget –recursive 参数在这两种情况下的有效性:
1.动态加载内容(例如通过 JavaScript 动态加载图片或其他资源):
wget 本身是一个命令行工具,主要用来抓取静态内容的网页。它不会执行网页中的 JavaScript 代码。因此,对于依赖于 JavaScript 动态加载的内容,wget –recursive 参数是无法抓取到这些动态生成的内容的。换句话说,如果图片或其他资源是通过 JavaScript 在页面加载后动态生成或请求的,那么 wget 无法获取这些资源。
为了抓取这些动态加载的内容,你可能需要使用像 Selenium 这样的工具,它能够模拟浏览器行为,执行 JavaScript,并抓取渲染后的网页内容。
2.数据库搜索结果的链接抓取:
在这种情况下,如果你的静态页面上没有包含直接指向数据库结果页面的链接,那么 wget –recursive 也不会抓取到这些结果。wget 的递归抓取是基于已经在页面上的链接,而不是模拟用户的搜索行为。如果链接只有在你执行搜索操作后才会生成并显示,那么 wget 也无法抓取到这些链接。
这种情况下,如果你要抓取搜索结果,可能需要编写一个脚本来模拟搜索操作,并将返回的结果页面进行解析和抓取。比如,可以使用 Python 的 requests 库来发送搜索请求,然后解析返回的 HTML 页面中的链接。
总结来说,wget –recursive 参数在你提到的这两种情况下都是无效的,因其设计和能力的限制。如果你需要抓取这些动态或基于用户行为生成的内容,通常需要更高级的工具或自定义的脚本来实现。
评价所用的四个维度很有意思。我在读和写的过程中,也有些体验。
从用途来说,关键的问题是,会不会公开。如果是做笔记、收集之用,复制文本、截图、保存网页、打印为 PDF,都似乎并没有太多不同,都能编辑(不同程度)。若是有可能再公开,需要公正防伪,WebArchive 一般足够,如果源站内容有开源repo,并在提交时使用了 PGP 签名,则算自带防伪了。同时我有一个奇想,如果我们录下访问 https 网站过程的数据包,并使其可以重播,是否可做此域名下某URL曾返回某内容的证明。
说起文中的四种方法,我自己的网站几乎都适用。希望更多的网站都能支持这四种方法。首先不要付费墙、遮罩类的元素,不干扰阅读和选择、复制。其次,正在开发一个功能,给内容中提到的所有链接自动做 WebArchive 快照,这样读者保存参考时,内容的相关链接也自然具备了防失效效果。同时,我还优化了打印的样式,可直接打印出一份排版良好的 PDF。最后,使用 SSR。
感谢回复。
我记得以前了解 https 协议的时候,就提到它可以抵抗「重放攻击」(好像意思就是网路中间的窃听者把一个请求的数据包录制下来,然后自己再伪装成发起者再次发送一遍。)如果和你说的奇想「如果我们录下访问 https 网站过程的数据包,并使其可以重播」是一回事的话,我觉得可能也无法善意使用该方法。
另外, WebArchive 服务本身好像也有点……不太稳定?我记得去年还是今年年初听到新闻,他们好像在一场什么官司里输掉了。好像有这么回事。
你可以用这个:https://r.jina.ai/https://zhuanlan.zhihu.com/p/351326998 网址那个改成你想要保存的网址。
这个会转换markdown,然后在保存的。
感谢回复!
我试了一下,挺神奇的,也挺方便。只是似乎不会把所有内容(例如图片等)都转换为markdown吧?