我想获取 archive.org 上给定网站的所有文件。原因可能包括:
- 原作者没有存档自己的网站,现在网站已经下线,我想从中创建一个公共缓存
- 我是某个网站的原作者,丢失了一些内容。我想恢复它
- ...
我怎么做 ?
考虑到archive.org wayback machine非常特殊:网页链接不指向档案本身,而是指向可能不再存在的网页。客户端使用JavaScript来更新链接,但像递归wget这样的技巧不起作用。
答案1
我尝试了各种方法来下载网站,最后我找到了 wayback machine 下载器 - 它由 Hartator 开发(所以请把所有功劳都归于他),但我根本没有注意到他对这个问题的评论。为了节省您的时间,我决定在此处将 wayback_machine_downloader 宝石添加为单独的答案。
该网站位于http://www.archiveteam.org/index.php?title=恢复列出了从archive.org下载的这些方法:
- Wayback Machine 下载器,Ruby 中的小工具,用于从 Wayback Machine 下载任何网站。免费且开源。我的选择!
- 沃里克- 主站点似乎瘫痪了。
- Wayback 下载器- 这项服务会从 Wayback Machine 下载你的网站,甚至还会为 WordPress 添加插件。不免费。
答案2
这可以使用结合 bshell 脚本wget
。
这个想法是利用一些URL 功能回程机器:
http://web.archive.org/web/*/http://domain/*
将以http://domain/
递归方式列出所有已保存的页面。它可用于构建要下载的页面索引,并避免使用启发式方法检测网页中的链接。对于每个链接,还有第一个版本和最后一个版本的日期。http://web.archive.org/web/YYYYMMDDhhmmss*/http://domain/page
将列出http://domain/page
YYYY 年的所有版本。在该页面中,可以找到版本的具体链接(带有确切的时间戳)http://web.archive.org/web/YYYYMMDDhhmmssid_/http://domain/page
http://domain/page
将返回给定时间戳的未修改页面。请注意ID_令牌。
这些是构建脚本以从给定域下载所有内容的基础。
答案3
您可以使用 轻松完成此操作wget
。
wget -rc --accept-regex '.*ROOT.*' START
其中ROOT
是网站的根 URL,START
是起始 URL。例如:
wget -rc --accept-regex '.*http://www.math.niu.edu/~rusin/known-math/.*' http://web.archive.org/web/20150415082949fw_/http://www.math.niu.edu/~rusin/known-math/
请注意,您应该绕过 Web 档案的 URL 包装框架START
。在大多数浏览器中,您可以右键单击页面并选择“仅显示此框架”。
答案4
Wayback Machine 下载器效果很好。抓取了页面 - .html
、.js
和.css
所有资产。只需index.html
在本地运行即可。
安装 Ruby 后,只需执行以下操作:
gem install wayback_machine_downloader
wayback_machine_downloader http://example.com -c 5 # -c 5 adds concurrency for much faster downloads
如果你在下载大量文件的过程中连接失败,你甚至可以再次运行它,它会重新抓取任何丢失的页面