答案 0 :(得分:2)
这只是一个对评论来说太大的想法集合。
你最好的选择可能是DBpedia。它是维基百科的语义镜像,具有比维基百科API更复杂的查询可能性。正如您在this paper中所看到的,它可以处理相当复杂的空间查询,但您需要进入SPARQL。这是该论文的一个数字:
也就是说,维基百科的API为空间查询提供了一个相对较新的功能:Showing nearby wiki information。我认为你不能在多边形中搜索,但这是一个好的开始。
这是我之前写的一篇关于使用mwclient
来获取文章坐标的答案,但该用户的优势是可以获得一篇文章清单。
Geonames.org可能有助于将搜索范围缩小到地理定位文章。检查英语维基百科中的806,000个地理定位文章并不算太糟糕。
出于性能原因,为了避免给维基百科的服务器带来麻烦,您可以考虑使用Wikipedia或DBpedia的转储工作。
答案 1 :(得分:1)
看起来像是OpenStreetMap和Overpass API的任务。
为了构建我们的查询,我们转到overpass turbo(Overpass API的一个不错的前端),打开向导并在伦敦输入“wikipedia = *”因为我们对{感兴趣{3}}
自动生成并执行的查询将是这一个。
[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;
您可以查看wikipedia tag。
现在有各种选项可以导出它。在立交桥turbo上,您可以转到 export ,并将结果直接保存到文件或获取发送到Overpass API的原始查询。您现在可以直接从python脚本运行此查询。
请注意,有不同的result here可用:JSON,XML和CVS。在维基百科标签旁边,您可能也对output formats感兴趣。
另请注意,这不会让您获得伦敦境内坐标的所有维基百科页面,只是OSM数据库中包含的坐标。