【发布时间】:2012-04-16 03:28:47
【问题描述】:
当我遇到这个设计问题时,我一直在用 php 构建刮板和蜘蛛。我想知道在制作一个分离爬行和抓取任务的系统(就像大多数专业系统似乎做的那样)和一个在蜘蛛爬行时抓取的系统之间的权衡。我唯一能想到的是,通过将其拆分并使用队列,您可以通过多个只需要询问队列要抓取的下一页的抓取器来更好地并行化任务。谁能想到其他权衡并向我解释这些通常分为两个程序的主要原因?
注意:两种情况下的爬取顺序是一样的,唯一的区别是页面被拉取的时间。
【问题讨论】:
-
“这些通常被分成两个程序的主要原因”——因为它是不同的任务?
-
你可以很容易地让蜘蛛抓取并处理页面,然后再转到页面中的链接,但是大多数蜘蛛只是将链接放入队列中等待另一个程序(刮板)来稍后获得。如果有的话,这会更复杂并涉及更多页面请求,但这是大多数系统的工作方式。为什么?
标签: php architecture parallel-processing web-crawler web-scraping