如何使用维基百科API获取位置查询的人口(国家或州/省和/或县)?

问题描述 投票:0回答:1

我正在尝试使用Covid-19 Dataset构建SIR model。为了构建此模型,我需要每个位置(国家或省/州和/或县)的人口来计算SIR中的S(易感性)。由于此数据集不包含总体数据,因此我认为使用API​​进行此操作会很不错。我遇到了countryinfo,但自2018年以来人口估计数尚未更新(根据示例和pypi);另外,在输入国家名称时必须小心,因为countryinfo接受的国家名称不一定与数据集中提供的名称相同。

from countryinfo import CountryInfo

country = CountryInfo('Singapore')
p = country.population()
print(p)
# 5469700

country = CountryInfo('United States')
# country = CountryInfo('US') # is not accepted
p = country.population()
print(p)
# 319259000

我可以在Google中键入通用查询(即,键入"US""United States")以查找任何位置的人口,但是我不确定如何在python中以编程方式执行此操作。在下面的'us'位置键入location将显示美国人口(通过this solution)。

query = 'https://www.google.com/search?q=' + location + 'population

我认为wikipedia API可以达到相同的效果,但是我不太确定如何执行此操作。有没有更好的办法?如果不是,如何使用wikipedia从查询的位置获取人口?

python-3.x geolocation wikipedia-api wikidata population
1个回答
0
投票

正如smartse所提到的,使用Wikidata而不是Wikipedia无疑更容易解决。在Wikipedia上,信息不是以结构化的方式存储的,因此您无法编写查询来直接获取人口信息。您将必须使用API​​调用来加载有关该地点的文章,然后使用您自己的代码解析文本以检索人口。

对于查询Wikidata,您可以使用Wikidata Query Service。首先查询给定关键字的查询,然后返回结果的查询,如下所示:

SELECT ?population WHERE {
  SERVICE wikibase:mwapi {
      bd:serviceParam mwapi:search "Singapore" .    
      bd:serviceParam mwapi:language "en" .    
      bd:serviceParam wikibase:api "EntitySearch" .
      bd:serviceParam wikibase:endpoint "www.wikidata.org" .
      bd:serviceParam wikibase:limit 1 .
      ?item wikibase:apiOutputItem mwapi:item .
  }
  ?item wdt:P1082 ?population
}

请注意,同样在Wikidata中,有时数据也已过时。但是,由于人口在一年到下一年之间没有显着变化,因此这对您的应用程序来说应该不是问题。

© www.soinside.com 2019 - 2024. All rights reserved.