首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Web爬虫-如何构建访问的url集?

Web爬虫-如何构建访问的url集?
EN

Stack Overflow用户
提问于 2017-04-29 12:23:22
回答 3查看 344关注 0票数 0

我已经在rabbitMQ上实现了一个分布式网络爬虫。除了访问的url集之外,一切几乎都完成了。我希望在不同的爬虫之间有某种共享的变量。

此外,正如我一直读到的,这个url集的大小将是巨大的,应该存储在磁盘中。在分布式环境中存储、访问和共享访问过的urls列表的最佳方法是什么?

EN

回答 3

Stack Overflow用户

发布于 2017-05-13 12:44:31

正如majidkabir所说,Nutch是一个很好的solution...but,它不回答这个问题,因为它是关于在构建自己的爬虫时如何跟踪状态的。

我将提供在Node中创建爬虫(https://www.npmjs.com/package/node-nutch)时采用的方法。从名称中可以看出,我所采用的方法是以Nutch的方法为模型的。

我所做的就是使用URL作为键(在正常化之后),然后在包含爬行状态的S3中存储一个简单的JSON文件。当是时候运行下一个爬行时,我会快速浏览每个JSON文件,寻找要爬行的候选文件,然后在检索页面之后,设置JSON以指示何时爬行next。

我爬行的页面数量从来都不是很大,所以这很好,但是如果它确实变大了,我会将JSON放入类似ElasticSearch的内容中,然后根据日期字段搜索要爬行的URL。

票数 1
EN

Stack Overflow用户

发布于 2017-05-04 14:37:47

理想情况下,任何可伸缩且支持索引的存储都可以用于此类用例。

我所知道的用于这类目的的一些系统是索尔ElasticSearchRedis或任何可以扩展的SQL数据库。

我使用Redis是为了同样的目的,我已经存储了大约200万个URL。我确信,通过增加节点,我应该能够轻松地进行扩展。

票数 0
EN

Stack Overflow用户

发布于 2017-05-09 09:13:31

您可以使用阿帕奇·纳奇进行爬行,这个库能够在特定的时间段内爬行url,并为此目的使用一些算法。

例如:当具有特定url的页面在第二次爬行中没有更改时,增加下一次爬行的时间,如果它更改,则减少此时间段。您可以创建自己的nutch插件来解析nutch爬行的数据,或者使用预定义的nutch插件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43695675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档