2016-04-05 6 views
0

私はWikipedia API - wikitoolsパッケージを使用してWikipediaからいくつかのデータを抽出しています。私は以下の形式の出力を得て、今はタイムスタンプといくつかのページの特定のユーザーのリビジョンに対するコメントを抽出したいと思います。のは、私はちょうどTechBotによって行われたコメントをしたいとしましょう、私は考え出し、私のような何かを行うことができます。Wikipedia APIとPython 2.7を使用して特定のユーザーのコメントを一覧から抽出します。

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

しかし、問題は、[「7940378」]これは、固有のページIDであり、すべてのページに変更されますので、私はページを取得する方法を知りません。これを行う別の方法がありますか?

[{ 
"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ループを使用する代わりに。 2つのループに分割して、外側のループがページを取得し、内側のループを使用してリビジョンを取得することができます。

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

でなければなりません。私はそのページが必要なキーであることに気付かなかった。私は正解の答えを編集しました – Anbarasan

関連する問題