2

当我遇到这个设计问题时,我一直在用 php 构建一个刮板和蜘蛛。我想知道在制作一个分离爬行和抓取任务的系统(就像大多数专业系统似乎做的那样)和一个在蜘蛛爬行时抓取的系统之间的权衡。我唯一能想到的是,通过将其拆分并使用队列,您可以通过多个只需要询问队列要抓取的下一页的抓取器来更好地并行化任务。谁能想到其他权衡并向我解释这些通常分为两个程序的主要原因?

注意:两种情况下的爬取顺序是一样的,唯一的区别是页面被拉取的时间。

4

1 回答 1

2

爬虫检索页面,蜘蛛处理它们。如果您将这些任务分开,您可以更改一项任务的实现而不更改另一项。这就是他们分开的原因:这只是好的软件设计。

您给出的示例是一个很好的示例:如果您将检索与单个类/模块/程序/函数/任何内容中的处理结合起来,那么检索页面方式的任何更改(例如,并行检索、通过代理检索等)都需要重写整个程序。

这是另一个问题:如果您想处理不同类型的数据(例如 rss 提要而不是 html 页面),您需要从头开始编写整个抓取工具,并且您不能重用您在页面检索方面所做的任何工作。

于 2012-04-16T06:15:34.147 回答