2015-04-06 103 views
0

我在弄清楚如何獲取指定時間範圍內的所有頁面修訂。我創建了一個python腳本,它允許我獲得最後的100個修訂版本,但我沒有看到任何允許指定時間範圍的內容。我看到以下參數:Wikipedia API:按時間表獲取修訂

rvstart: Timestamp to start listing from. (enum) 
rvend: Timestamp to end listing at. (enum) 

但是,我無法讓這些工作。如果我將時間戳記作爲修訂時間戳記存在,但不是作爲封裝的任意範圍,則它們可以工作。有人有想法嗎?

這裏是我的腳本,如果你有興趣:

import json 

from wikitools import wiki, api 

site = wiki.Wiki("http://en.wikipedia.org/w/api.php") 
names = ["Sherrod Brown","Maria Cantwell"] 
allMembers = [] 
for name in names: 
    params = {'action':'query', 
     'titles': name, 
     'prop':'revisions', 
     'rvprop':'ids|flags|timestamp|userid|user|size|comment|tags', 
     'rvlimit':'100' 
    } 
    req = api.APIRequest(site, params) 
    res = req.query(querycontinue=False) 
    allMembers.append(res) 

with open('/Applications/MAMP/htdocs/python/wikipedia-1.4.0/data/wiki-leg.json', 'w') as outfile: 
    json.dump(allMembers, outfile, indent=2) 
+0

http://stackoverflow.com/questions/7136343/wikipedia-api-how-to-get-the-number-of-revisions-of-a-page?rq=1 – Ajay

+0

@Ajay - 我看到這個,但是這並不回答有關設置搜索修訂版的範圍最小/最大時間範圍的問題。 – thefreeline

回答

1

好吧,我想我已經想通了。這兩個參數中強調了在OP:

rvstart: Timestamp to start listing from. (enum) 
rvend: Timestamp to end listing at. (enum) 

已在結合使用:

rvdir: Direction to list in. (enum) 
    older: List newest revisions first (default) NOTE: rvstart/rvstartid has to be higher than rvend/rvendid 
    newer: List oldest revisions first NOTE: rvstart/rvstartid has to be lower than rvend/rvendid 

所以,更新所述PARAMS到:

params = {'action':'query', 
     'titles': name, 
     'prop':'revisions', 
     'rvprop':'ids|flags|timestamp|userid|user|size|comment|tags', 
     'rvlimit':'100', 
     'rvstart':'2009-01-01T12:00:00Z', 
     'rvend':'2014-12-31T23:59:00Z', 
     'rvdir':'newer' 
    } 

出現以實現預期的目的。