分布式爬虫

分布式爬虫介绍

什么是分布式爬虫?

分布式爬虫是将多台电脑构建成一个机群,然后将爬虫程序部署在机群内的每台电脑上进行执行爬取任务,最终将所有的数据进行

分布式爬虫的作用

提高爬取效率

分布式爬虫的简单实现

由于原生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为任意设置

相关推荐