Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 如何下载维基百科文章并存储在数据库中_Html_Xml_Database_Text_Wikipedia - Fatal编程技术网

Html 如何下载维基百科文章并存储在数据库中

Html 如何下载维基百科文章并存储在数据库中,html,xml,database,text,wikipedia,Html,Xml,Database,Text,Wikipedia,我有一个web应用程序,用户(主要是英语学习者或儿童)可以在我的数据库中搜索一些现有的授权文章。它们可以根据类别、标签以及每个标签的难度进行过滤 因此,我正在考虑将维基百科的文章添加到数据库中,并能够偶尔更新数据库中的文章,但我不确定什么是最好的方法。我的理解是,我每次都需要下载压缩文件,然后对它们进行解压缩,这样我就可以得到XML格式的文章。然后我可以根据标签将它们添加到数据库中?有没有办法让它自动更新?我读了这篇文章,但是关于数据转储,但不知道如何开始 也许仅仅抓取和索引维基百科会更好。然后

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

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


也许仅仅抓取和索引维基百科会更好。然后,您可以在ApacheSolr之类的系统中存储一个包含您关心的页面的搜索索引。如果您这样做,请务必礼貌地告知您的请求率

这样就避免了存储,并且不需要努力更新内容。只有链接需要更新(可能要少得多)


如果你不想过滤人们发现的内容,那么你可以注册并节省爬虫程序的时间/精力

也许仅仅爬行和索引维基百科会更好。然后,您可以在ApacheSolr之类的系统中存储一个包含您关心的页面的搜索索引。如果您这样做,请务必礼貌地告知您的请求率

这样就避免了存储,并且不需要努力更新内容。只有链接需要更新(可能要少得多)



如果你不想过滤人们发现的内容,那么你可以注册并节省爬虫程序的时间/精力

您首先需要一个用户帐户,以防您不知道;)。其次,您需要访问他们的API Web服务,此时您需要处理他们通过调用返回的XML结果。@GoldBishop即使没有帐户,您也可以使用Wikipedia的API,以防万一您不知道。Ruby提到的转储与API没有任何关系。@svick如果没有帐户,你不需要获得授权Cookie吗?对于该帐户,您只需通过另一个身份验证字符串传入您的唯一帐户id,就可以在桌面上完成所有操作。@GoldBishop我不完全确定您在说什么,但不,如果您没有帐户,您不必做任何特殊的事。我不知道它与我的桌面有什么关系,也不知道“另一个身份验证字符串”是什么(它肯定与Wikipedia API没有任何关系)。@svick只是想知道,因为我不得不在其他mediawiki实现上发布一些身份验证字符串,只是认为Wikipedia也是如此,我的错误信息。您首先需要一个用户帐户,以防您不知道;)。其次,您需要访问他们的API Web服务,此时您需要处理他们通过调用返回的XML结果。@GoldBishop即使没有帐户,您也可以使用Wikipedia的API,以防万一您不知道。Ruby提到的转储与API没有任何关系。@svick如果没有帐户,你不需要获得授权Cookie吗?对于该帐户,您只需通过另一个身份验证字符串传入您的唯一帐户id,就可以在桌面上完成所有操作。@GoldBishop我不完全确定您在说什么,但不,如果您没有帐户,您不必做任何特殊的事。我不知道它与我的桌面有什么关系,也不知道“另一个身份验证字符串”是什么(它肯定与Wikipedia API没有任何关系)。@svick只是想知道,因为我不得不在其他mediawiki实现上发布一些身份验证字符串,只是认为Wikipedia也是如此,我的错误信息。由于我对网络技术知之甚少,我还有几个问题。但是,如果有很多用户在应用程序上搜索文章,那么最好像我对其他文章所做的那样将所有内容都存储在数据库中,这样搜索和显示它们就更容易了。你真的不应该直接抓取维基百科。如果您只需要几篇文章,请使用API。如果您想要所有这些,请使用转储。这取决于您是否想要有限的数据集或对维基百科的一般访问。但据我所知,除非你自己使用CC-BY-SA许可证,否则你不允许批发复制维基百科。这或多或少意味着,如果您想让应用程序中的用户能够访问他们的内容,您必须链接到它,而不是复制它。由于以可接受的速度进行爬网所需的时间(数周),通过api重新使用Google的爬网可能是最好的。我认为许可证不是一个主要障碍,如果你说文章内容是根据CC-BY-SA许可的,并且链接到维基百科上的原始内容(用于归属),你应该会很好。再说一次,直接(或间接通过谷歌)抓取网站很可能不是最好的解决方案,有更好的解决方案(API或转储)。但在什么时候,你的工作会成为一个衍生性的工作?如果你没有比维基百科内容更多的内容,你真的只是一个叉子吗?假设我写了一篇文章和一个轻量级的演示框架,然后从维基百科添加了50000篇文章。。。。边界在哪里?这对我来说似乎很不清楚。因为我对网络技术知之甚少,我还有几个问题要问。但是,如果有很多用户在应用程序上搜索文章,那么最好像我对其他文章所做的那样将所有内容都存储在数据库中,这样搜索和显示它们就更容易了。你真的不应该直接抓取维基百科。如果您只需要几篇文章,请使用API。如果你愿意