获取伦敦内部所有维基百科文章

一般来说,我想要获得伦敦境内所有维基百科文章的链接(和标题)。 我尝试过使用Google,但不幸的是没有提供适当的搜索字词。 任何提示?

伦敦地图


这实际上只是一个太大而不能发表评论的想法集合。

你最好的选择可能是DBpedia。 它是维基百科的语义镜像,具有比维基百科的API更复杂的查询可能性。 正如你在本文中看到的那样,它可以处理相当复杂的空间查询,但是你需要进入SPARQL。 这是一篇来自该论文的图:

示例SPARQL查询

也就是说,维基百科的API对于空间查询具有相对较新的功能:显示附近的维基信息。 我不认为你可以搜索多边形,但这是一个好的开始。

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

Geonames.org可以帮助缩小对地理定位文章的搜索范围。 在英语维基百科中检查806,000个地理定位的文章并不算太坏。

出于性能方面的考虑,为了避免为维基百科的服务器造成麻烦,您可以考虑从维基百科或DBpedia转储中进行工作。


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

为了构建我们的查询,我们转到立交桥turbo(Overpass API的一个很好的前端),打开向导并在伦敦输入“wikipedia = *”,因为我们对维基百科标签感兴趣。

自动生成并执行的查询将是这一个。

[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;

你可以在这里查看结果。

现在有各种选项可以导出它。 在立式turbo上,您可以导出并将结果直接安全地保存到文件中,或者获取发送到立交桥API的原始查询。 你现在可以直接从你的python脚本运行这个查询。

请注意,有不同的输出格式可用:JSON,XML和CVS。 在维基百科标签旁边,您可能也对wikidata标签感兴趣。

另外请注意,这不会让所有维基百科页面在伦敦内部具有坐标,只是包含在OSM数据库中的维基百科页面。

链接地址: http://www.djcxy.com/p/62849.html

上一篇: Getting all Wikipedia articles with coordinates inside London

下一篇: Getting a particular image from Wikipedia with BeautifulSoup