2011-08-21 7 views
7

किसी को भी पता है कि MediaWiki एपीआई का उपयोग कर एक विकिपीडिया पृष्ठ के संशोधन की संख्या प्राप्त करने? मैं इस API दस्तावेज़ों को पढ़ लिया है, लेकिन संबंधित एपीआई नहीं मिल सकता है:
Revision APIविकिपीडिया एपीआई: किसी पृष्ठ के संशोधन की संख्या कैसे प्राप्त करें?

उत्तर

7

केवल संभावना सभी संशोधन को पुनः प्राप्त करने और उन्हें गिनती करने के लिए है। इसके लिए आपको continue the query की आवश्यकता हो सकती है।

Bug 17993 गिनती सहित के बारे में है, लेकिन अभी भी अनसुलझा है।

1

संशोधन को पुनः प्राप्त करने और उन्हें गिनती करने के लिए एक विधि को लागू (यह सिर्फ एक्सएमएल है)।

MediaWiki Revisions: Example

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> 

+0

इस संशोधन की संख्या पाने के लिए एक बहुत महंगा तरीका है। आप बहुत सारे डेटा (पेज सामग्री, सारांश संपादित) का अनुरोध कर रहे हैं कि आप बस फेंक रहे हैं। – Mark

1

यहाँ (इस मामले में JSON wiki page) कोड एक पेज के संशोधन की संख्या प्राप्त करने के लिए है: https://en.wikipedia.org/w/index.php?title=JSON&action=info#Edit_history

:

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 

आप परिणाम यहाँ जाँच कर सकते हैं

(संबंधित विकिपीडिया पेज साइडबार से सुलभ: टूल्स - पेज जानकारी)

संबंधित मुद्दे