目录

Internet Archive(https://archive.org/)专用页面

以下简称为IA

如何使用IA官方命令行工具进行文件下载

安装ia命令行工具(pythone3以上)

这个pip包中包含了python库和命令行工具ia.exe

pip install internetarchive

使用IA命令行工具以网址关键字进行搜索和下载

以STWP网站 的wiki存档项目为例,该网站发起了一个 将数千个wiki网站存档到IA的项目,去该项目的 列表页挑一个已经归档完成的 网站

ia search "fredblue.lautre.net"

将返回搜索到的项目,例如:{“identifier”: “wiki-fredblue.lautre.net_wiki-20230506”} 使用search条件进行下载:

ia download --search "fredblue.lautre.net"

或者使用identifier进行下载

ia download wiki-fredblue.lautre.net_wiki-20230506

将在当前路径下生成一个新的identifier名字的文件夹,并开始下载

批量下载collection

ia上还有很多其它组织/个人上传的文件,可以collection的形式形成组织,这里面可能包含很多items,每个item又可以包含很多个文件。例如ChinaXIV Mirror Project,要对其中的文件进行下载,首先去ia网站搜索该collection,可以把搜索条件限制为collection,搜到之后,进入collection首页,点击 About,在此页面记录其Identifier的值(chinaxivmirror) 获取collection中全部的items,输出到itemlist.txt:

ia search collection:chinaxivmirror --parameters rows:10 --itemlist  >itemlist.txt

只获取前100000条记录(注意rows必填,否则报错):

ia search collection:chinaxivmirror --parameters rows:100000

获取到itemlist后,就可以下载:

ia download --itemlist itemlist.txt

下载Wayback Machine网站快照

当一个用户通过某些IA的api,例如Save Page Now,将网站上传到IA之后,IA会有一个自动化流程定期整理所有用户上传数据,并形成一个web archive数据集(warc),这个格式和common crawl的格式相同。这个数据集包含了特定时间点之间所有用户通过Save Page Now上传的网页,因此在IA上对应的collection标记为Restricted,不能直接下载。

IA对特定网站的快照查看,通过wayback machine进行(https://web.archive.org/),该网站有一个类似common crawl cdx索引的索引服务器:https://github.com/internetarchive/wayback/tree/master/wayback-cdx-server,可以对特定网站中的网页生成下载链接。

所以,从IA下载特定网站的操作是:

  1. 获取网站url,例如“1700多个中文独立博客”(https://blog.save-web.org/blog/2022/07/19/%e9%9c%87%e6%83%8a%ef%bc%8cstwp-%e7%ab%9f%e7%84%b6%e7%bb%99-1700-%e5%a4%9a%e4%b8%aa%e4%b8%ad%e6%96%87%e7%8b%ac%e7%ab%8b%e5%8d%9a%e5%ae%a2%e5%81%9a%e4%ba%86%e6%af%8f%e6%97%a5%e5%a4%87%e4%bb%bd/),要先去上述网页点击rss list(https://github.com/saveweb/rss-list/)点击Release,下载Blog.opml.xml,从xml中提取出特定网站的 url,例如androidperformance.com
  2. 验证(可选),使用androidperformance.com关键字去wayback machine网站查看网页快照,直达链接:https://web.archive.org/web/20240000000000*/androidperformance.com
  3. 使用这个关键字去way back machine的cdx api生成文件列表并下载。(这一步需要咨询一下负责common crawl数据的大佬,看他 能否改一下代码测试一下)

使用python操作IA

pip install internetarchive 因为是pip安装的包,可以直接在pythong中使用:

import internetarchive
search = internetarchive.search_items('collection:chinaxivmirror')
for result in search:
    print(result['identifier'])

一些有用的python代码@n_g @等战: ia_scripts.zip 该压缩包中包含:

  1. 1_get_ia_collection_items.py 将一个指定collection中所有的item名字导出
  2. 2_get_ia_items_metadata.py 获取上一步导出的所有item的元数据(json)
  3. 3_get_warc_url_from_metadata.py 从上一步的元数据中搜索warc/warc.gz文件,并获取该文件的URL(可直接导入下载工具批量多线程下载)
  4. 5_warc_extract.py 从一个warc/warc.gz文件中提取特定mime类型的数据('application/pdf', 'text/html', 'text/plain', 'text/markdown')

3_get_warc_url_from_metadata_v2.zip step3的v2版本,bug修复:

  1. 由于数值以字符串形式存储,导致对于数值的排序不正确
  2. 输入文件名优化为脚本当前文件夹
  3. 对可下载文件的识别更准确,排除了.cdx.gz等无用的文件类型,同时新增rar、zip、7z等格式的收集。
  4. 新增从文件名识别域名的功能,能够识别到的域名放在download_url_domain.txt,不能识别的放在download_url_nodomain.txt,这两个文件加起来等于v1版本的输出
  5. 新增按域名对warc大小分类汇总,存放在download_url_summary.txt

6_get_warc_backup_url.zip IA对于任意一个item,均有主用、备用两个URL。使用脚本3从脚本2生成下载URL时,默认只会返回下载地址1(D1),如果D1出现问题,可以尝试从备用下载地址(D2)下载,这个脚本的作用是输入任何一个下载URL,返回另外一个。

已知问题: 5_warc_extract.py现在使用warcio,在处理某些版本的warc时有问题,建议更改为fastwarc(C++不支持zstd warc)或IA官方的warc工具(glang)

其它IA命令

查看某个item的metadata,其中d1、d2对应该item的2个存储服务器,有时候主存储限速时,可尝试备用存储下载

https://archive.org//metadata/{identifier}

遗留问题

  1. 发现IA上还有类型为 Access-restricted-item的文件,图标是一把锁,这些文件没找到下载办法
  2. 据说有某些文件需登陆后下载,但IA命令行没有找到登录设置。
  3. 有些“借阅”类型的文件(通常是电子书),可以在线阅读或下载后一定时间内可阅读,这些文件均被DRM加密,不一定能够破解。参考: dedrm

参考文档

cli tutorial-find-identifier-item

IA搜索关键字记录

tianya.cn:有越60G的数据但全部都标记为不允许下载。