- 概念:需要搭建分布式机群,让其对一组资源进行分布联合爬取
分布式的实现
- 安装scrapy-redis组件
- 原生的scrapy是不可以实现分布式爬虫的,必须让scrapy结合scrapy-redis组件一起实现分布式爬虫
- 为什么原生的scrapy不能实现分布式?【调度器、管道不可以被分布式机群共享】
- scrapy-redis作用:给scrapy框架提供可被共享的调度器、管道
实现流程
-
创建一个工程
-
创建一个CrawlSpider的爬虫文件
-
修改原始代码
导入from scrapy_redis.spiders import RedisCrawlSpider
将当前爬虫类的父类修改为RedisCrawlSpider
将allowed_domains和start_urls注释
添加新属性redis_key,可以被共享的调度器的队列的名称
编写数据解析相关操作 -
修改配置文件settings
指定使用可以被共享的管道:持久化存储到Redis数据库中
指定调度器
指定redis服务器:REDIS_HOST(redis远程服务器IP,若是本机127.0.0.1) REDIS_PORT -
Redis相关操作配置
配置Redis的配置文件:redis.windows.conf
修改配置文件:将bind 127.0.0.1进行删除;关闭保护模式protected-mode no(命令行) -
结合配置文件开启redis服务(命令行)
-
启动客户端(命令行)
-
执行工程: scrapy runspider 爬虫.py
-
向调度器的队列中放入一个起始url:调度器的队列在redis的客户端中,命令行。lpush xxx爬虫名 www.xxx.com