如何通过Wikipedia API查询特定时间的维基百科历史分类及版本数据
解答
按指定日期查询文章版本的可行性
完全可以实现。MediaWiki API 提供了原生的时间筛选参数,你可以通过 prop=revisions 模块搭配时间参数,查询任意日期或时间段对应的文章修订版本:
- 如需查询某个时间点的最新文章版本,将目标时间转换为 ISO 8601 格式的 UTC 时间戳,传入
rvstart参数,同时设置rvlimit=1、rvdir=older,即可拿到该时间点前最近的有效修订版本。 - 如需查询时间段内的所有版本,设置
rvstart为时间段起始时间、rvend为结束时间即可。
获取2015年1月法语维基前500个分类的实现调整
官方 allcategories 接口仅支持查询当前站点的分类数据,没有直接的历史快照参数,你可以通过指定分类命名空间+时间筛选的方式实现,调整后的代码如下:
import requests as rq from datetime import datetime S = rq.Session() url = "https://fr.wikipedia.org/w/api.php" # 目标时间设为2015年1月1日0点(UTC时间),可按需调整为1月内任意时间 target_timestamp = datetime(2015, 1, 1, 0, 0, 0).isoformat() + "Z" PARAMS = { "action": "query", "format": "json", "list": "allpages", "apnamespace": 14, # 维基百科分类页面对应的命名空间编号为14 "aplimit": 500, "apfilterredir": "nonredirects", # 过滤掉分类重定向页面 "rvstart": target_timestamp, "rvdir": "older", "rvlimit": 1 } R = S.get(url=url, params=PARAMS) DATA = R.json()
如果需要保留你原逻辑里的「分类下条目数≥100」的过滤条件,可以在拿到分类列表后,逐个请求对应分类页在目标时间点的修订内容,提取当时的分类成员数做二次过滤即可。
内容的提问来源于stack exchange,提问作者lableue
相关产品推荐
相关产品推荐

