2017-12-07 17 views
0

프로젝트의 경우 내 고향 페이지 인 Markdorf과 같은 일부 위키 백과 도시 페이지를 다운로드합니다. Wikipedia 페이지에서 볼 수 있듯이, 도시의 지역은 "Fläche"옆에 표시되고 인구는 "Einwohner"옆에 표시됩니다.위키 백과에서 도시에 대한 누락 된 정보를 얻는 방법

Screenshot of the Wikipedia page of Markdorf

은 어떻게 API에서이 데이터를받을 수 있나요? json version of the Wikipedia page of Markdorf을 다운로드 할 때 물론 응답에는 "Fläche"와 "Einwohner"가 포함되지만 그 옆에 가치는 없습니다. 위키 피 디아 페이지의 json 버전에서 "키 값 쌍"으로 반환되는 "Landkreis"와 같은 값을 얻을 것으로 예상됩니다 : 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

위키 피 디아 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 –