MediaWiki API 修订 VS 所有修订

MediaWiki API revisions VS allrevisions

我正在尝试编写脚本以获取传记的修订历史(目标是调查传记如何随时间变化)。我已经阅读了此处的大部分相关文章和有关 revision 模块的文档,但我无法获得想要的结果。我post我的代码,大部分是从文档中复制(部分或全部)的。我更改了 titles 参数中的值。

此外,我找到了 allrevisions 子模块。我对特定传记进行了 return 修订,但我得到的与某人在页面上找到的修订历史无关。

与“修订”相关的代码

import requests
S = requests.session()
URL = "https://www.mediawiki.org/w/api.php"

PARAMS = {
    "action": "query",
    "prop": "revisions",
    "titles": "Albert Einstein",
    "rvprop": "timestamp|user|content",
    "rvslots": "main",
    "formatversion": "2",
    "format": "json"
}
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
print(DATA)

与“allrevisions”相关的代码

URL = "https://www.mediawiki.org/w/api.php"

    PARAMS = {
    "action": "query",
    "list": "allrevisions",
    "titles": "Albert Einstein",
    "arvprop": "user|timestamp|content",
    "arvslots": "main",
    "arvstart": "2020-11-12T12:06:00Z",
    "formatversion": "2",
    "format": "json"
}
    R = S.get(url=URL, params=PARAMS)
    DATA = R.json()
    print(DATA)

有什么建议可以让它正常工作吗?最重要的是为什么与“修订”相关的代码没有 return 任何东西。

按照建议,我想获取特定页面的完整修订历史记录。

prop 模块 return 有关您提供的特定页面(或页面集)的信息。 list 模块 return 有关页面列表的信息,您只提供一些抽象标准,找到符合这些标准的页面是 API 正在做的工作的一部分(因此,titles 在你的第二个例子中基本上会被忽略)。

你没有清楚地解释你想要做什么,但我猜你想获得特定标题的完整页面历史记录,所以你的第一个例子大部分是正确的,除了你应该设置更高的rvlimit.

另请参阅 continuing queries 上的(不幸的是不是很好)文档,因为许多页面的历史记录太长,无法在单个请求中 return。