首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Storm爬行器为每个域设置不同的域特定爬行(例如速度)

使用Storm爬行器为每个域设置不同的域特定爬行(例如速度)
EN

Stack Overflow用户
提问于 2017-05-22 17:48:18
回答 2查看 689关注 0票数 1

我最近才发现了Storm爬虫,从过去的经验和研究中,我发现这个基于Apache的项目非常健壮,适合于许多用例和场景。

我已经阅读了一些教程,并测试了风暴爬行器的一些基本设置。我想在我的项目中使用爬虫,但是有一些事情我不确定爬虫是否有能力做,甚至它是否适合这样的用例。

我想做小的和大的递归爬行在许多web域与特定的速度设置和限制取回urls的数量。爬行可以在任何时候以不同的设置单独启动(不同的速度,忽略该域的robots.txt,忽略外部链接)。

问题:

  • 风暴爬行器适合这种情况吗?
  • 是否可以将限制设置为爬虫获取的最大页数?
  • 我可以为不同的域设置获取页面数的限制吗?
  • 是否可以单独监视特定域的爬行过程?
  • 我可以动态地设置设置,而不需要上传修改过的拓扑到storm?
  • 是否可以暂停或停止爬行(对于特定的域)?
  • 风暴爬行器通常作为一个已部署的拓扑运行吗?

我认为,对于其中的一些问题,答案可能是定制或编写我自己的螺栓或喷口。但我宁愿避免修改Fetcher Bolt或爬虫的主要逻辑,因为这意味着我正在开发另一个爬虫。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-22 18:44:52

很高兴你喜欢StormCrawler

  • 风暴爬行器适合这种情况吗?

也许吧,但是您需要修改/定制一些东西。

  • 是否可以将限制设置为爬虫获取的最大页数?

您目前可以对种子的深度设置一个限制,并且每个种子具有不同的值。

没有基于URL数量的全局过滤机制,但这是可以做到的。这取决于您使用什么来存储URL状态以及相应的突发事件和状态更新器实现。例如,如果您使用Elasticsearch来存储URL,您可以让一个URL过滤器检查索引中的URL数量,并在此基础上筛选URL(现有的或不存在)。

  • 我可以为不同的域设置获取页面数的限制吗?

您可以对上面提出的解决方案进行专门化,并在每个域或主机上查询已知的URL数量。这样做不需要对核心元素进行任何修改,只需要一个自定义URL过滤器。

  • 是否可以单独监视特定域的爬行过程?

同样,这取决于您使用什么作为后端。例如,使用Elasticsearch,您可以使用Kibana查看每个域的URL。

  • 我可以动态地设置设置,而不需要上传修改过的拓扑到storm?

不是的。启动工作任务时读取配置。我认识一些用户,他们编写了一个由DB表支持的自定义配置实现,并从中读取了他们的组件,但这意味着要修改大量代码。

  • 是否可以暂停或停止爬行(对于特定的域)?

不是基于每个域,但是您可以添加一个中间螺栓来检查域是否应该被处理。如果没有,你可以简单地失败。这又取决于状态存储。例如,还可以向ES口添加自定义筛选器和状态索引中的字段。每当某个特定域的爬行停止时,您就可以修改匹配某个特定域的所有URL的字段值。

  • 风暴爬行器通常作为一个已部署的拓扑运行吗?

是的,经常。

  • 我认为,对于其中的一些问题,答案可能是定制或编写我自己的螺栓或喷口。但我宁愿避免修改Fetcher Bolt或爬虫的主要逻辑,因为这意味着我正在开发另一个爬虫。

StormCrawler是非常模块化的,所以总是有几种方法来做事情;-)

我非常肯定,您可以通过修改小型非核心部件来实现您想要的行为,同时具有单一的拓扑结构。如果需要代码中更重要的部分(例如,每个种子机器人设置),那么我们可能希望将其添加到代码中--您的贡献将是非常受欢迎的。

票数 2
EN

Stack Overflow用户

发布于 2017-05-22 17:52:32

你有非常有趣的问题。我想您可以在这里发现更多:代码:官方教程的https://github.com/DigitalPebble/storm-crawlerhttp://stormcrawler.net/和一些响应:storm.pdf

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

https://stackoverflow.com/questions/44119099

复制
相关文章

相似问题

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