【问题标题】:How to download wikipedia articles and store in a database如何下载维基百科文章并存储在数据库中
【发布时间】:2012-09-07 22:02:17
【问题描述】:

我有这个网络应用程序,用户(主要是英语学习者或儿童)可以在我的数据库中搜索一些现有的许可文章。它们可以按类别、标签以及每个标签的难度进行过滤。

因此,我正在考虑将 Wikipedia 中的文章添加到数据库中,并且能够不时更新我数据库中的文章,但我不确定什么是最好的方法。我的理解是我每次都需要下载压缩文件然后解压,这样我才能得到XML格式的文章。那么我可以根据标签将它们添加到数据库中吗?有没有办法让它自动更新?我阅读了有关数据转储的文章,但不知道如何开始。

http://en.wikipedia.org/wiki/Wikipedia:Database_download#SQL_schema

【问题讨论】:

  • 您首先需要一个用户帐户,以防您不知道;)。其次,您需要访问他们的 API Web 服务,此时您需要处理他们通过调用返回的 XML 结果。
  • @GoldBishop 即使没有帐户,您也可以使用 Wikipedia 的 API,以防万一您不知道。并且 Ruby 提到的转储与 API 没有任何关系。
  • @svick 没有帐户,您不需要获取授权 Cookie 吗?使用该帐户,您只需将唯一的帐户 ID 与另一个身份验证字符串一起传递,您就可以在桌面上完成所有操作。
  • @GoldBishop 我不完全确定您在说什么,但是不,如果您没有帐户,则不必做任何特别的事情。而且我不知道它与我的桌面有什么关系,也不知道“另一个身份验证字符串”是什么(它当然与 Wikipedia API 没有任何关系)。
  • @svick 只是想知道因为我不得不在其他 mediawiki 实现上发布一些身份验证字符串,只是认为维基百科也是如此,我的错误信息。

标签: html xml database text wikipedia


【解决方案1】:

也许只对维基百科进行爬网和索引会更好。然后,您可以在诸如 Apache Solr 之类的系统中存储带有您关心的页面的搜索索引。如果您这样做,请务必对您的请求率保持礼貌

这样可以避免存储,并且无需努力更新内容。只有链接需要更新(可能频率要低得多)。

如果您不想过滤人们发现的内容,那么您可能只需注册Google's search API 并节省爬虫的时间/精力......

【讨论】:

  • 由于我对网络技术了解不多,所以我还有几个问题。但是,如果有很多用户在应用程序上搜索文章,那么最好将所有内容都存储在数据库中,就像我对其他文章所做的那样,这样更容易搜索和显示它们。
  • 你真的不应该直接抓取维基百科。如果您只需要几篇文章,请使用 API。如果您想要所有这些,请使用转储。
  • 这取决于您是否想要有限的数据集或对维基百科的一般访问。 IANAL,但据我了解,除非您自己使用 CC-BY-SA 许可证,否则您不得批发复制维基百科。 en.wikipedia.org/wiki/Wikipedia:Mirrors_and_forks。这或多或少意味着,如果您想让您的应用程序中的人们对他们的内容进行一般访问,您必须链接到它而不是复制它。由于以可接受的速度(数周)进行抓取所涉及的时间,通过他们的 api 重新使用 Google 的抓取可能是最好的。
  • 我认为许可不是主要障碍,如果您说文章的内容是根据 CC-BY-SA 许可并链接到维基百科上的原文(用于署名),您应该是完全没问题。同样,直接(或通过 Google 间接)抓取网站很可能不是最佳解决方案,还有更好的解决方案(API 或转储)。
  • 但是你的作品在什么时候变成了衍生作品?如果你没有比维基百科内容更多的内容,你真的只是一个叉子吗?想象一下,我写了一篇文章和一个轻量级的演示框架,然后从维基百科添加了 50,000 篇文章......边界在哪里?对我来说似乎很不清楚。
猜你喜欢
  • 2011-02-06
  • 2011-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-31
  • 1970-01-01
  • 2018-03-22
相关资源
最近更新 更多