2016-04-05 3 views
0

Я использую wikipedia API - пакет wikitools для извлечения некоторых данных из Википедии. Я получаю вывод формата, показанного ниже, и теперь я хочу извлечь временную метку и комментарий для исправлений, сделанных для конкретного пользователя для нескольких страниц. Скажем, я просто хочу замечания TechBot, то я понял, что я могу сделать что-то вроде:Извлечь конкретные комментарии пользователей из списка с помощью API Википедии и Python 2.7

for revision in res["query"]["pages"]["7940378"]["revisions"]: 
    if revision["user"] = "Techbot": 
     do.something() 

Но проблема [ «7940378»], потому что это уникальный идентификатор страницы и будет меняться для каждой страницы и я не знаю, как получить страницу. Есть ли другой способ сделать это?

[{ 
"query": { 
    "pages": { 
    "7940378": { 
     "ns": 0, 
     "pageid": 7940378, 
     "revisions": [ 
     { 
      "comment": "robot Modifying: [[az:T\u00fcrk Tarixi]]", 
      "timestamp": "2009-01-03T19:47:11Z", 
      "user": "TechBot" 
     }, 
     { 
      "comment": "", 
      "timestamp": "2009-02-14T02:07:49Z", 
      "anon": "", 
      "user": "88.231.237.130" 
     }, 
     { 
      "comment": "fixing recent deletion by merging it with the next paragraph", 
      "timestamp": "2009-04-03T14:49:27Z", 
      "user": "Soap" 
     }, 
     { 
      "comment": "robot Modifying: [[az:T\u00fcrk tarixi]]", 
      "timestamp": "2009-04-09T14:35:19Z", 
      "user": "RibotBOT" 
     }, 
     { 
      "comment": "Repairing link to disambiguation page - [[Wikipedia:Disambiguation pages with links|You can help!]]", 
      "timestamp": "2009-06-12T23:55:55Z", 
      "user": "J04n" 
     } 
     ], 
     "title": "History of the Turkic peoples" 
    } 
    } 
}, 
"continue": { 
    "rvcontinue": "20090807172715|306635892", 
    "continue": "||" 
}, 
"warnings": { 
    "main": { 
    "*": "Unrecognized parameter: 'user'" 
    } 
} 
}] 

ответ

1

Вместо того, чтобы использовать одиночный цикл. вы можете разделить на две петли, где внешний цикл получает страницы, а с внутренним циклом вы можете перейти к ревизиям.

for pageid, pagedetails in res["query"]["pages"].iteritems(): 
    for revision in pagedetails["revisions"]: 
     if revision["user"] == "TechBot": 
      do.something() 
+0

Это не работает, потому что я не могу получить доступ к 'ревизиям' из' pages'. 'для пересмотра на странице [" revisions "]: TypeError: строковые индексы должны быть целыми числами – Knokkelgeddon

+0

my bad. я не заметил, что страница будет обязательным ключом. я отредактировал ответ для правильности – Anbarasan

Смежные вопросы