可以看到,scrapy单机模式,通过一个scrapy引擎通过一个调度器,将Requests队列中的request请求发给下载器,进行页面的爬取。那么多台主机协作的关键是共享一个爬取队列。所以,单主机的爬虫架构如下图所示:
前文提到,分布式爬虫的关键是共享一个requests队列,维护该队列的主机称为master,而从机则负责数据的抓取,数据处理和数据存储,所以分布式爬虫架构如下图所示:
2、环境配置目前已经有专门的python库实现了分布式架构。Scrapy-Redis库改写了Scrapy的调度器,队列等组件,可以方便的实现Scrapy分布式架构。
安装完成,我们可以测试一下本地的redis环境,输入我们的连接信息:
(3)windows下访问虚拟机redis我们选择使用虚拟机上的redis数据库来维护爬取队列,所以接下来,我们使用windows下的可视化客户端访问虚拟机下的redis:
可以看到,成功访问:
3、代码实现使用Scrapy-Redis实现分布式爬虫,需要在scrapy的setting.py中添加如下的配置,当然还有很多其他可用配置,这里只需添加如下的几个就可以实现分布是爬取:
而redis中,则维护了一个爬取队列:
短短几分钟,我们就抓取了百度贴吧聊天吧的100页帖子3900+条,存入了本地的mongodb数据库:至此,分布式爬虫练手完毕!如果想要学习python爬虫的话,私信小编007就行!
领取专属 10元无门槛券
私享最新 技术干货