Waybackpack 是一个命令行工具,允许你下载给定 URL 的完整 Wayback Machine 存档。
例如,要下载劳工部主页截至 1996 年(恰好是该站点被存档的第一年)的所有副本,你可以运行:
waybackpack http://www.dol.gov/ -d ~/Downloads/dol-wayback --to-date 1996
结果:
~/Downloads/dol-wayback/
├── 19961102145216
│ └── www.dol.gov
│ └── index.html
├── 19961103063843
│ └── www.dol.gov
│ └── index.html
├── 19961222171647
│ └── www.dol.gov
│ └── index.html
└── 19961223193614
└── www.dol.gov
└── index.html
或者,仅打印所有存档快照的 URL:
waybackpack http://www.dol.gov/ --list
pip install waybackpack
usage: waybackpack [-h] [--version] (-d DIR | --list) [--raw] [--root ROOT]
[--from-date FROM_DATE] [--to-date TO_DATE]
[--user-agent USER_AGENT] [--follow-redirects]
[--uniques-only] [--collapse COLLAPSE] [--ignore-errors]
[--max-retries MAX_RETRIES] [--no-clobber] [--quiet]
[--progress] [--delay DELAY] [--delay-retry DELAY_RETRY]
url
positional arguments:
url 你想要下载的资源的 URL。
options:
-h, --help 显示此帮助信息并退出
--version 显示程序的版本号并退出
-d DIR, --dir DIR 保存文件的目录。如果目录不存在,则会创建。
--list 不下载文件,仅打印快照列表。
--raw 以原始状态获取文件,不经过 Wayback Machine 或 waybackpack 的处理。
--root ROOT 提供快照资源的根 URL。默认:'https://web.archive.org'
--from-date FROM_DATE
时间戳字符串,指示要下载的最早快照。应采用 YYYYMMDDhhss 格式,不过你可以根据需要省略尾部数字。例如,'201501' 是有效的。
--to-date TO_DATE 时间戳字符串,指示要下载的最晚快照。应采用 YYYYMMDDhhss 格式,不过你可以根据需要省略尾部数字。例如,'201604' 是有效的。
--user-agent USER_AGENT
发送给 Wayback Machine 请求中的 User-Agent 标头。如果可能,请包含短语 'waybackpack' 和你的电子邮件地址。这样,如果你过度使用他们的服务器,他们知道联系谁。默认:'waybackpack'。
--follow-redirects 跟随重定向。
--uniques-only 仅下载重复文件的第一个版本。
--collapse COLLAPSE 一个 archive.org 的 `collapse` 参数。例如,--collapse timestamp:6 将结果压缩到每个月最多一个。参见这里:https://github.com/internetarchive/wayback/blob/master/wayback-cdx-server/README.md#collapsing
--ignore-errors 不要在非 HTTP 错误(例如 requests 库的 ChunkedEncodingError)上崩溃。而是记录错误并继续。参见这里:https://github.com/jsvine/waybackpack/issues/19
--max-retries MAX_RETRIES
在跳过之前,尝试获取具有 4XX 或 5XX 状态码的内容多少次?
--no-clobber 如果文件已存在(且大小大于 0),则不再下载。
--quiet 不向 stderr 记录进度信息。
--progress 显示进度条。会静默默认的日志输出。需要安装 `tqdm`。
--delay DELAY 每次获取之间休眠 X 秒。
--delay-retry DELAY_RETRY
每次错误后重试之间休眠 X 秒。
Waybackpack 使用纯 Python 编写,仅依赖于 requests,并且应该能在 Python 可运行的任何地方工作。需要 Python 3.3+。
感谢以下用户捕获错误、修复拼写错误并提出有用的功能: