对于一个项目,我下载了一些维基百科城市页面,例如我家乡的页面Markdorf。正如您在维基百科页面上看到的那样,城市的区域显示在“Fläche”旁边,人口显示在“Einwohner”旁边。
如何从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当然包含信息,但没有可解析的方式。
那么:如何使用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. Mai 2015.</ref> |
和Fläche
等信息?此外,Einwohner
根本不会被退回。
答案 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". }
}
可以通过维基数据JSON endpoint访问该查询的结果(该查询仅编码为该网址中的query
参数)。