【问题标题】:MediaWiki API revisions VS allrevisionsMediaWiki API 修订版 VS 所有修订版
【发布时间】:2021-02-26 11:15:57
【问题描述】:

我正在尝试编写一个脚本来获取传记的修订历史(目标是调查传记如何随时间变化)。我已经阅读了这里的大部分相关文章以及关于 revision 模块的文档,但我无法得到我想要的结果。我发布了我的代码,其中大部分是从文档中复制的(部分或完整)。我更改了 titles 参数中的值。

此外,我发现了 allrevisions 子模块。我让它返回特定传记的修订,但我得到的与某人在页面上找到的修订历史无关。

与“修订”相关的代码

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)

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

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

【问题讨论】:

标签: python mediawiki-api revision-history


【解决方案1】:

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

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

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

【讨论】:

  • 不幸的是,“rvlimit”并没有改变任何东西。如果我将“Albert Einstein”更改为“Python”,则使用相同的代码。
  • 当然可以:en.wikipedia.org/w/…
  • 在我上面的代码中,如果我添加“rvlimit”参数,它甚至不会在响应中返回“revisions”。
猜你喜欢
  • 2015-12-27
  • 2011-04-22
  • 2011-03-12
  • 2010-11-15
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 1970-01-01
  • 2014-07-22
相关资源
最近更新 更多