2017-12-07 16 views
0

プロジェクトの場合、私は自分の故郷のページのようなウィキペディアの都市ページをダウンロードしますMarkdorf。ウィキペディアのページで見ることができるように、街のエリアは「Fläche」の隣に表示され、人口は「Einwohner」の隣に表示されます。ウィキペディアから都市に欠けている情報を取得する方法

Screenshot of the Wikipedia page of Markdorf

は、どのように私は、APIからこのデータを得ることができますか?私がjson version of the Wikipedia page of Markdorfをダウンロードしたとき、もちろんその応答は "Fläche"と "Einwohner"を含んでいますが、その隣には価値がありません。私はこの値を "Landkreis"のように得ることを期待していました。これはWikipediaページのjson版で "key value pair"として返されます:Landkreis = Bodenseekreis

Flächeは、データなしでFläche<ref name="Daten & Fakten">[http://markdorf.de/index.php?id=351 ''Daten & Fakten''] auf der Internetseite der Stadt Markdorf, abgerufen am 29.&nbsp;Mai 2015.</ref> |と記載されています。参照されているウェブサイトhttp://markdorf.de/index.php?id=351にはもちろん、情報は含まれていますが、解析できません。

Screenshot of the Wikipedia api response for Markdorf

だから:どのように私はWikipedia apiを使用してFlächeEinwohnerなどの情報にアクセスすることができますか?また、Bevölkerungsdichteは返されません。

+0

「[Wikipedia infoboxから情報を抽出するにはどうすればよいですか?](https://stackoverflow.com/questions/33862336/how-to-extract-information-from-a-wikipedia-infobox) – Tgr

答えて

1

Tgrが正しい場合は、wikitextを直接解析するのではなく、構造化されたデータソースを使用する必要があります。 wikidata query serviceを使用して、町の名前に基づいて面積と母集団を返すSPARQLクエリを作成することができます。そのクエリは次のようになります。そのクエリの

SELECT ?town ?townLabel ?area ?population WHERE { 
    ?town ?label "Markdorf"@de.  # find the item labeled "Markdorf" in German 
    ?town wdt:P2046 ?area.   # get the area(wdt:P2046) of that item 
    ?town wdt:P1082 ?population. # get the population(wdt:P1082) of that item 
    SERVICE wikibase:label { bd:serviceParam wikibase:language " 
[AUTO_LANGUAGE],de". } 
} 

Link to the query above

結果は、ウィキデータJSON endpoint(クエリがちょうどそのURLでqueryパラメータとして符号化されている)を介してアクセスすることができます。

+0

ありがとうございました。これはほとんどの値に対して非常にうまく機能しています。ナンバープレートや "Stadtgliederung"を照会する方法を知っていますか?ナンバープレートはパラメータとして存在しますが、レスポンスでは空です。私は次の大都市に属しているので、ナンバープレートがないために起こったと思います。 –

+0

これはわかりました。 googleからここに来る人のクエリは次のとおりです:https://pastebin.com/2WEWGdmn –

関連する問題