正在获取某些信息框属性的自动值



我正在使用pywikibot-api来获取Wikipedia Infobox属性。我想提取的很少是人口否认、人口、海拔等(https://en.wikipedia.org/wiki/Beijing),api正在返回"自动;作为population_density_km2等关键字的值。对于其他几个城市,我得到的是实际密度,而不是汽车密度。任何人都知道这背后的原因,以及我如何才能获得实际价值?


import pywikibot
def get_page(city: dict) : 
"""
Returns parsed wikipedia page
"""
page = pywikibot.Page(en_wiki, re.search(r'wiki/(.*)', city['article']['value']).group(1))
if page.pageid == 0:
raise Exception('page do not exist')
return page
def get_info_box_details(templates: dict):
"""
Get info box details
"""
infobox_template = []
for tmpl, params in templates:
if 'Infobox' in tmpl:
infobox_template.append(params)
population = { k:v for my_dict in infobox_template  for k,v in my_dict.items() if 'population' in k}
print(population)
wiki_page = get_page(city)
templates = wiki_page.raw_extracted_templates
info_box = get_info_box_details(templates)

来自模板:Infobox_settlement的文档:

要自动计算总面积的密度,请键入auto而不是任何密度值。

因此,auto意味着信息框模板(MediaWiki(将尝试使用面积和人口值来计算值。至于推理,我想它会减少冗余,这应该会减轻人工编辑对模板维护的负担。

您可以在Python程序中执行同样的操作(通过按区域划分人口来计算密度;类似于模板的操作(,也可以直接从页面的HTML输出中抓取数据(这也有其自身的挑战(。

考虑使用wikidata来获取这些信息。这是一个数据库,基本上有来自infobox的信息,但已经解析了。

获取一个国家的人口及其城市人口总和的示例查询

相关内容

  • 没有找到相关文章

最新更新