首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为网络爬虫存储URL边界和分发工作?

为网络爬虫存储URL边界和分发工作?
EN

Stack Overflow用户
提问于 2015-11-08 18:19:00
回答 1查看 787关注 0票数 0

我想使一个具有成本效益的分布式爬虫(即,我可以添加额外的服务器,以更快地处理URL),重点是抓取整个网站作为一个服务。它将抓取目标站点的每个URL,并下载,例如,在其他站点上直接引用的任何图片或文件(但不能在此之后爬行其他站点)。由于目标站点所有者将允许他们的网站进行爬行,爬虫可能不那么礼貌,例如每秒下载20页。

这个建筑听起来合理吗?

  • AWS ECS2实例是可以根据需要杀死或联机的工人。
  • 运行PostgreSQL的AWS数据库存储页面元数据。
  • URL边界(要爬行的URL )、所见URL列表、URL爬行深度等将存储在数据库中。
  • 工作人员将轮询数据库中的新工作,以及哪个工作人员也在处理存储在数据库上的内容。
  • 我会维护一个要查看的URL的数据库表,工作人员将在这个URL的爬行启动和完成时用时间戳标记。如果员工死亡,另一个员工会注意到工作没有在超时期间内完成,从而获得了工作。
  • 如果一个工作人员每秒可以爬行几百页,那么员工一次抓取大量URL以提高处理效率是有意义的。但是,我不确定是否有一种简单的方法可以将爬行次数限制为每秒单个主机。
  • 当工作人员登记链接时,这样做的数据库查询将避免已经看到的排队链接。

我读过几篇关于你不应该(也应该!)的文章。这里使用PostgreSQL作为一个queue...my思想,用于队列使用数据库是因为它具有更高的成本效率(AWS听起来很昂贵,每百万次请求需要花费0.50美元),无论如何,工作人员都需要向数据库写入页面元数据,所以它需要能够处理这个队列的吞吐量,而且(也许MQ系统可以这样做)--它允许我编写复杂的队列逻辑。

上面的声音听起来有用吗?我读过几篇关于爬虫的文章,但大多数文章都没有明确说明工作人员是如何通信的,URL边界存储在哪里,这样就可以抵御故障。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 01:24:41

关于你的边疆,我认为你应该看看前翅目甲壳虫分布-锋翅目

Frontera给了你很多前端,如存储和得分为您的前沿链接。另外,它也是用Python编写的,这样可以方便地对未来进行推理和编辑。

最后一点--文档太棒了,给了我一个先机--开始思考网页爬虫是如何进行缩放的。

使用frontera与划痕和自定义仪表板一直是一个真正的乐趣。目前部署在数字海洋,但我们可以很容易地部署到EC2和AWS与前沿分布和电子病历(HBASE)。

你的提议看起来应该行得通。

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

https://stackoverflow.com/questions/33597359

复制
相关文章

相似问题

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