如何从维基百科获取城市的缺失信息

时间:2017-12-07 08:51:43

标签: wikipedia-api mediawiki-api

对于一个项目,我下载了一些维基百科城市页面,例如我家乡的页面Markdorf。正如您在维基百科页面上看到的那样,城市的区域显示在“Fläche”旁边,人口显示在“Einwohner”旁边。

Screenshot of the Wikipedia page of Markdorf

如何从api获取此数据?当我下载json version of the Wikipedia page of Markdorf时,响应当然包含“Fläche”和“Einwohner”,但旁边没有值。我希望得到像“Landkreis”这样的值,它在维基百科页面的json版本中作为“键值对”返回:productid

Landkreis = Bodenseekreis列为Fläche,没有任何数据。引用的网站http://markdorf.de/index.php?id=351当然包含信息,但没有可解析的方式。

Screenshot of the Wikipedia api response for Markdorf

那么:如何使用Wikipedia api访问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> |Fläche等信息?此外,Einwohner根本不会被退回。

1 个答案:

答案 0 :(得分:1)

Tgr是对的,您应该使用结构化数据源,而不是尝试直接解析wiki文本。您可以使用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访问该查询的结果(该查询仅编码为该网址中的query参数)。