在Python中设计多进程爬虫
我正在用Python开发一个多进程的爬虫。这个爬虫的工作是从一个页面开始抓取链接,然后逐步深入。具体来说,最上层的页面包含一个类别列表,第二层页面展示这些类别中的活动,而最后一层页面则是活动中的参与者。我无法预测会有多少类别、活动或参与者。
我对如何设计这样一个爬虫有点困惑,特别是如何判断它什么时候完成抓取(预计它会一直运行,直到发现并获取所有相关页面)。
理想情况下,第一次抓取应该是同步的,而之后的抓取则是异步的,这样可以最大化并行解析和添加数据到数据库,但我现在不知道如何判断抓取是否完成。
你会建议我如何构建这个爬虫,特别是在并行处理和上述问题上?
2 个回答
1
我猜你是在一个叫做队列的地方放置要处理的项目,然后用一些工作者来处理这些项目。工作者会找到新的项目并把它们添加到队列里。
当所有的工作者都闲着,队列里的项目也处理完了,这个过程就结束了。
当工作者使用队列的task_done()方法时,主线程可以使用join()方法来等待,直到队列为空为止。