【问题标题】:Getting all Wikipedia articles with coordinates inside London获取所有带有伦敦坐标的维基百科文章
【发布时间】:2016-02-12 11:52:58
【问题描述】:

一般来说,我想获取所有带有伦敦坐标的维基百科文章的链接(和标题)。我尝试使用 Google,但不幸的是没有提供适当的搜索词。有什么提示吗?

【问题讨论】:

  • 没有允许您在形状内搜索的 MediaWiki API。您将必须获取所有地理编码文章,然后检查您的功能中的坐标..

标签: python openstreetmap wikipedia wikipedia-api


【解决方案1】:

这真的只是一个想法的集合,太大了,无法评论。

您最好的选择可能是DBpedia。它是 Wikipedia 的语义镜像,具有比 Wikipedia 的 API 更复杂的查询可能性。正如您在this paper 中看到的,它可以处理相当复杂的空间查询,但您需要进入SPARQL。这是该论文中的一个数字:

也就是说,维基百科的 API 有一个相对较新的空间查询功能:Showing nearby wiki information。我不认为你可以在多边形中搜索,但这是一个好的开始。

这是我之前写的关于使用 mwclient 从文章中获取坐标的答案,但该用户具有获取文章列表的优势。

Geonames.org 可能有助于将搜索范围缩小到地理定位的文章。查看英文维基百科中的 806,000 篇地理定位文章也不错。

出于性能原因,并避免给 Wikipedia 的服务器带来麻烦,您可以考虑使用 Wikipedia 或 DBpedia 的转储。

【讨论】:

    【解决方案2】:

    看起来像是 OpenStreetMap 和 Overpass API 的任务。

    为了构建我们的查询,我们转到 overpass turbo(Overpass API 的一个不错的前端),打开 wizard 并输入“wikipedia=* in London”,因为我们对 wikipedia tag 感兴趣.

    自动生成和执行的查询将是这个:

    [out:json][timeout:25];
    // fetch area “London” to search in
    {{geocodeArea:London}}->.searchArea;
    // gather results
    (
      // query part for: “wikipedia=*”
      node["wikipedia"](area.searchArea);
      way["wikipedia"](area.searchArea);
      relation["wikipedia"](area.searchArea);
    );
    // print results
    out body;
    >;
    out skel qt;
    

    这会返回太多元素,也会给您的浏览器带来沉重负担。并且可能会因为超时时间太短而失败。

    我们稍作修改。我们增加了 超时 并删除了递归步骤 (>;),因为我们只对直接结果感兴趣,而不对任何相关对象感兴趣。结果查询将是这个:

    [out:json][timeout:90];
    // fetch area “London” to search in
    {{geocodeArea:London}}->.searchArea;
    // gather results
    (
      // query part for: “wikipedia=*”
      node["wikipedia"](area.searchArea);
      way["wikipedia"](area.searchArea);
      relation["wikipedia"](area.searchArea);
    );
    // print results
    out body;
    out skel qt;
    

    您可以查看result here

    现在有多种选项可以导出它。在 overpass turbo 上,您可以转到 export 并将结果直接保存到文件或获取发送到 Overpass API 的原始查询。您现在可以直接从您的 python 脚本运行此查询。

    请注意,有不同的output formats 可用:JSON、XML 和 CSV。在 Wikipedia 标签旁边,您可能还对 wikidata tag 感兴趣。

    还请注意,这不会为您提供所有具有伦敦坐标的 Wikipedia 页面,而只是包含在 OSM 数据库中的那个。

    【讨论】:

    • 好吧,总的来说,你很棒很可爱。问题是结果是个笑话。 OpenStreetMap 很棒,但是当涉及到那个标签时,质量真的很低。
    • 我没有比较维基百科标签的覆盖范围,但我猜你是对的:/
    • 好在——去年质量有了很大提高,现在有工具可以同时查询wikidata和osm——wiki.openstreetmap.org/wiki/Wikidata%2BOSM_SPARQL_query_service
    猜你喜欢
    • 2014-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多