API Википедии: как получить количество ревизий страницы?

Кто-нибудь знает, как получить количество ревизий страницы википедии с помощью API mediawiki? Я прочитал эту документацию по API, но не могу найти соответствующий API:
API версий


person masu.mo    schedule 21.08.2011    source источник


Ответы (3)


Единственная возможность — получить все ревизии и подсчитать их. Для этого вам может потребоваться продолжить запрос.

Ошибка 17993 связана с подсчетом, но до сих пор не решена.

person Bergi    schedule 24.09.2012

Вот код для получения количества редакций страницы (в данном случае это вики-страница JSON ):

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

(доступно с соответствующей боковой панели страницы википедии: Инструменты - Информация о странице)

person Paul    schedule 20.11.2016
comment
Я попробовал этот фрагмент кода, и он продолжает работать и никогда не перестает выполняться. - person Sidrah; 17.10.2020
comment
Это был 2016 год, и с тех пор API мог измениться :) Хотя не уверен - person Paul; 21.10.2020

Получите ревизии и реализуйте метод их подсчета (это просто XML).

Версии MediaWiki: пример

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>

person Pedro Nunes    schedule 24.09.2012
comment
Это очень дорогой способ получить количество ревизий. Вы запрашиваете много данных (содержимое страницы, сводки по редактированию), которые просто выбрасываете. - person Mark; 05.02.2015