【发布时间】:2011-08-21 04:24:10
【问题描述】:
有人知道如何使用 mediawiki API 获取维基百科页面的修订数量吗?
我已阅读此 API 文档,但找不到相关 API:
Revision API
【问题讨论】:
标签: wikipedia wikipedia-api mediawiki-api wikimedia
有人知道如何使用 mediawiki API 获取维基百科页面的修订数量吗?
我已阅读此 API 文档,但找不到相关 API:
Revision API
【问题讨论】:
标签: wikipedia wikipedia-api mediawiki-api wikimedia
唯一的可能性是检索所有修订并计算它们。为此,您可能需要 continue the query。
Bug 17993 即将包含计数,但仍未解决。
【讨论】:
这是获取页面修订数量的代码(在本例中为JSON wiki page):
import requests
BASE_URL = "http://en.wikipedia.org/w/api.php"
TITLE = 'JSON'
parameters = { 'action': 'query',
'format': 'json',
'continue': '',
'titles': TITLE,
'prop': 'revisions',
'rvprop': 'ids|userid',
'rvlimit': 'max'}
wp_call = requests.get(BASE_URL, params=parameters)
response = wp_call.json()
total_revisions = 0
while True:
wp_call = requests.get(BASE_URL, params=parameters)
response = wp_call.json()
for page_id in response['query']['pages']:
total_revisions += len(response['query']['pages'][page_id]['revisions'])
if 'continue' in response:
parameters['continue'] = response['continue']['continue']
parameters['rvcontinue'] = response['continue']['rvcontinue']
else:
break
print parameters['titles'], total_revisions
您可以在这里查看结果:https://en.wikipedia.org/w/index.php?title=JSON&action=info#Edit_history
(可从相应的维基百科页面侧边栏访问:工具 - 页面信息)
【讨论】:
检索修订并实现一种方法来计算它们(这只是 XML)。
api.php ? action=query & prop=revisions & titles=API|Main%20Page & rvprop=timestamp|user|comment|content
.
<api>
<query>
<pages>
<page pageid="1191" ns="0" title="API">
<revisions>
<rev user="Harryboyles" timestamp="2006-10-31T05:39:01Z" comment="revert unexplained change: see talk ...">
...content...
</rev>
</revisions>
</page>
<page pageid="11105676" ns="0" title="Main Page">
<revisions>
<rev user="Ryan Postlethwaite" timestamp="2007-06-26T19:05:06Z" comment="rv - what was that for?">
...content...
</rev>
</revisions>
</page>
</pages>
【讨论】:
通过newer MediaWikis 提供的REST API,您可以使用the "Get page history counts" API 获取页面的修订数。
例如,
GET https://en.wikipedia.org/w/rest.php/v1/page/Jupiter/history/counts/edits?from=384955912&to=406217369
此请求将返回如下 JSON 响应:
{
"count": 110,
"limit": false
}
零编码。
【讨论】: