是否有可能获得所有维基百科国家,地区和城市之间的关系列表?我找不到任何适合此任务的API。 解析我需要的所有信息的最简单方法是什么? PS:我知道,还有另外一个数据源,我可以从中获取这些信息。但我对维基百科很感兴趣......
答案 0 :(得分:3)
获取整个图表可能有点乏味,但您可以从实验/非官方Wikidata Query API获得大部分数据。
我建议采用以下工作流程:
转到您要使用的实体类型的实例,例如Estonia (Q191)并查找其 (P31)属性的实例,您会发现:country ,主权国家,联合国会员国,欧盟成员国等
使用维基数据查询API 声明命令输出每个实体 作为选择的P31属性。让我们试试country (Q6256):
http://wdq.wmflabs.org/api?q=claim[31:6256]
它输出一组数字ID:这是你的国家! (请注意,结果仍然不完整,因为只找到了141个项目:维基数据中缺少任何一个国家/地区,或者根据评论中的Nemo建议,某些国家/地区可以在country (Q6256) subclasses(P279)中找到)
您可能需要的不仅仅是ID,因此您可以向Wikidata Official API询问实体数据:
https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q16&format=json&props=labels|claims&languages=en|fr
(这里是加拿大(Q16)数据,在json中,只有英文和法文的索赔和标签数据。请查看documentation以根据您的需要调整参数)
您可以一次查询多个实体,限制为50,如下所示:
https://www.wikidata.org/w/api.php?action=wbgetentities&ids=Q16|Q17|Q20|Q27|Q28|Q29|Q30|Q31|Q32|Q33|Q34|Q35|Q36|Q37|Q38|Q39|Q40|Q41|Q43|Q45|Q77|Q79|Q96|Q114&format=json&props=labels|claims&languages=en|fr
从每个国家/地区的数据中,您可以查找注册为管理细分(P150)的实体,并对这些新实体重复。
或者,您可以使用树命令获取所有管理细分树。例如,法国(Q142)将是http://wdq.wmflabs.org/api?q=tree[142][150]
Tadaaa,36994项!但考虑到从一个国家到另一个国家可能遇到的各种细分,这种方法更难以完善。并且避免从浏览器进行此类查询,它可能会崩溃。
您现在只是必须按国家/地区查找城市,方法是使用声明命令和相应的子类优化最后一个查询(P279) municipality (Q15284)实体(all available here):对于法国,那是 commune (Q484170),所以你的请求看起来像
http://wdq.wmflabs.org/api?q=tree[142][150] AND claim[31:484170]
然后对所有国家重复:玩得开心!
答案 1 :(得分:2)
就个人而言,我开始使用维基数据,因为它直接使用MediaWiki,使用相同的API,因此您可以使用类似的代码。我会用pywikibot开始。就像那样,您仍然可以从维基百科请求有意义的页面(例如列表页面或类别)。