【问题标题】:How to extract data from Wikipedia for a specific category like Person?如何从 Wikipedia 中提取特定类别(如 Person)的数据?
【发布时间】:2020-07-27 06:07:51
【问题描述】:

我想从 Wikipedia 中提取属于特定类别的文章,例如公司或个人。有没有好的方法来做到这一点?现在,我有一个维基百科数据转储,我可以从中提取页面内容,但我无法根据类别过滤数据。另外,我可以从给定类别的维基百科转储中获得准确数量的文章吗?

【问题讨论】:

  • (1) 请提供您尝试自己编写的代码; (2) 什么是“维基百科数据转储”?以什么格式?如何重现您的问题?
  • 您的问题太笼统,无法回答。这是我的一篇文章,介绍了一个可以从 Wikipedia 抓取内容的库。 towardsdatascience.com/…
  • @Roy2012 维基百科数据转储,我的意思是可以从here下载的转储文件,这是一个由xml文档组成的bz2文件。我想要做的是以下内容:我想提取属于特定类别的文章,如个人或公司。目前,我可以将所有内容提取到一个 txt 文件中,但不能按类别提取。
  • @Christopher 我使用了您的文章建议的wikipedia 模块。这个模块要求我有页面标题才能获取它的内容,这不是我想做的。我想一次提取一个类别的所有文章,而不是一次又一次地搜索。
  • 您所指的 XML 文档中的类别部分吗?

标签: python database wikipedia wikipedia-api


【解决方案1】:

不确定您的问题中的“提取”是什么意思,但让我们尝试提供帮助。

如果我想要文章标题,我会去https://petscan.wmflabs.org/ 并构造查询来告诉我标题。如果我想要内容,我会制作一个简单的脚本来询问源维基文本,或者使用&action=render,可以直接下载 HTML,参见https://en.wikipedia.org/w/index.php?title=Stack_Overflow&action=render。

如果您想使用 XML 转储,https://en.wikipedia.org/wiki/Wikipedia:Database_download 列出了几个阅读器,或者您可以编写自己的 XML 阅读器。如果您遇到问题,请随时提出新问题 :-)。

【讨论】:

    【解决方案2】:

    如果您需要 SQL 解决方案,您可以通过在categorylinks.sql 中搜索行来查找某个类别的文章,其中cl_to=category_title。它给出了子类别文章的所有页面 ID。然后您可以计算cl_type='subcat' 所在的所有行以找到子类别的数量。 cl_type='page'给出页数。

    要查找文章或类别的相应标题,您可以使用page.sql。

    另一种方法是获取category.sql 转储。它有每个类别的子类别和文章的数量。

    最新的 enwiki 转储中的实际转储名称为:

    • enwiki-latest-categorylinks.sql
    • enwiki-latest-page.sql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 2013-09-07
      • 2016-01-03
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 2014-02-03
      相关资源
      最近更新 更多