【问题标题】:Get article from Wikipedia XML dump - by title [duplicate]从 Wikipedia XML 转储中获取文章 - 按标题 [重复]
【发布时间】:2023-03-04 23:40:02
【问题描述】:

我知道这个问题可能比看起来简单,但是在阅读了大量材料之后,我真的很困惑。

所以,我已经下载了一个维基百科转储(准确地说是这个:enwiktionary-20151002-pages-articles-multistream.xml.bz2 - 它应该包含来自英语维基词典的所有文章)。我想要的是按标题获取特定文章的内容(与在 Wikipedia 本身中搜索它的方式相同)。

注意:我不想要 HTML(由维基百科生成)。我想要“真实”的内容,正如您在“编辑”维基百科中的任何文章时看到的那样。

简而言之:

  • 搜索带有标题的文章,例如“书”
  • 获取内容

我应该怎么做?


附:我不是在寻找特定于语言的解决方案。我只是需要一些关于如何解决这个问题的想法。

【问题讨论】:

  • 不熟悉维基百科转储语法,您可以发布示例或文档链接
  • 拥有近 12k 的代表,您应该知道这些问题属于“主要基于意见” 类别
  • 我会先解压缩 bz2 文件,因为似乎没有办法以压缩格式处理它
  • @PedroLobito 那么,这个“基于意见”如何?我知道可能有 10 种不同的可能方法(几乎所有与编程相关的方法)。我只需要一个
  • @RiggsFolly 哈哈。我想我已经过了这部分...... :)

标签: php ruby xml mediawiki wikipedia


【解决方案1】:

如果您只是了解一小部分信息,您可以使用 Wikipedias JSON API... https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=book

如果你想要完整的文章,那么我相信你可以使用这个: https://en.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&explaintext=&titles=book

这两个来源之间的区别在于,在第一个中,我们设置了“exintro”,而在第二个链接中,我们设置了“说明文本”。这些部分使用“\n\n\n===”和“===\n”进行分割。有了这些信息,您可以挑选出一个部分的结尾并找到一个新部分的开头以及部分名称。

欲了解更多信息,请查看https://en.wikipedia.org/w/api.php?action=help&modules=query%2Bextracts

抱歉,这不是 XML。

【讨论】:

  • 这个问题在于它利用了在线维基百科。或者它需要一个准完整的离线 mediawiki 安装。下载转储并希望离线执行的原因是速度。 (我需要进行一些大规模的处理)
  • @Dr.Kameleon 看来他们也提供 sql 转储 - 我建议使用它,然后使用常规 sql 进行查询。用如此庞大的数据集解析 XML 会更有效率,除非你有很多内存并且可以将整个内容读入内存
猜你喜欢
  • 1970-01-01
  • 2012-05-29
  • 2013-12-04
  • 2012-10-21
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 1970-01-01
  • 2015-07-12
相关资源
最近更新 更多