解析维基百科国家,地区,城市

时间:2014-07-11 11:16:44

标签: parsing mediawiki wikipedia wikipedia-api mediawiki-api

是否有可能获得所有维基百科国家,地区和城市之间的关系列表?我找不到任何适合此任务的API。 解析我需要的所有信息的最简单方法是什么? PS:我知道,还有另外一个数据源,我可以从中获取这些信息。但我对维基百科很感兴趣......

2 个答案:

答案 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)

您应该使用Wikidata和/或dbpedia

就个人而言,我开始使用维基数据,因为它直接使用MediaWiki,使用相同的API,因此您可以使用类似的代码。我会用pywikibot开始。就像那样,您仍然可以从维基百科请求有意义的页面(例如列表页面或类别)。

这里概述了ways to access Wikidata