分布式爬虫
Posted fanhua-wushagn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式爬虫相关的知识,希望对你有一定的参考价值。
分布式爬虫介绍
什么是分布式爬虫?
分布式爬虫是将多台电脑构建成一个机群,然后将爬虫程序部署在机群内的每台电脑上进行执行爬取任务,最终将所有的数据进行
分布式爬虫的作用
提高爬取效率
分布式爬虫的简单实现
由于原生scrapy的五大组件的不能实现共享,数据无法整合,所以必须通过scrapy和scrapy_redis组件结合进行实现
Scrapy_redis组件
作用:
给原生scrapy框架提供可以被共享的管道和调度器
实现流程
1、基于CrawlSpider创建一个项目:爬取阳光网信息
2、修改爬虫文件:
- 导包 from scrapy_redis.spiders import RedisCrawlSpider ,让爬虫类继承” RedisCrawlSpider“类
- 注释 allowed_ddomainx和 start_urls,添加新属性: redis_key = "name" # name为被共享的调度器队列的名称
- 完成数据解析代码编写
3、修改配置文件:settings.py
- 设置管道类为可以被共享的管道,即scrapy_redis中的管道类 ITEM_PIPELINES = { ‘scrapy_redis.pipelines.RedisPipeline‘:300 ,}
- 设置调度器:
# 增加一个去重容器配置,作用:使用Redis的Set集合存储请求的数据,从而实现去重数据的持久化 DUPEFILTER_CALSS = "scrapy_redis.dupefilter.REPPDupeFilter" # 使用scrapy_redis的调度器 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 配置调度器是否持久化,即爬虫结束后,是否清除Redis中的请求队列和去重指纹数据,为True时,表示不再对爬取过的数据进行爬取 SCHEDULER_PERSIST = True
4、配置redis的配置文件: redis.conf
# 关闭ip访问限制 #bind 127.0.0.1 ::1 # 关闭保护模式 yes:其他客户端只能读取不能写入数据 no:可读可写 protected-mode no
5、启动redis-server
redis-server 配置文件
scrapy_redis组件安装 : pip install scrapy_redis
由于我们需要使用scrapy_redis组件的实现共享管道和调度器,所以需要继承scrapy_redis中的” RedisCrawlSpider“类
from scrapy_redis.spiders import RedisCrawlSpider class FbsSpider(RedisCrawlSpider): pass
将起始url和域名列表进行注释,添加参数:
# allowed_domains = [‘www.xxx.com‘] # start_urls = [‘http://www.xxx.com/‘] redis_key = "sun" # sun为任意设置
以上是关于分布式爬虫的主要内容,如果未能解决你的问题,请参考以下文章