scrapy框架
分布式爬虫
概念
搭建一个分布式的机群,让其对一组资源进行分布联合爬取
作用
提升爬取数据的效率
实现
原生的scrapy是不可以实现分布式爬虫的,必须结合着scrapy-redis组件一起实现分布式爬虫。
- 调度器不可以被分布式机群共享
- 管道不可以被分布式机群共享
安装scrapy-redis组件
pip install scrapy-redis
scrapy-redis作用:
- 可以给原生的scrapy框架提供可以被共享的管道和调度器
实现流程
- 创建一个工程
- 创建一个基于CrawlSpider的爬虫文件
- 修改爬虫文件
导包:from scrapy_redis.spiders import RedisCrawlSpider
将爬虫类文件的父类改为RedisCrawlSpider
注释:allowed_domains、start_urls
添加新属性:redis_key = ‘xxxx’ (可以被共享的调度器名称)
编写数据解析操作 - 修改配置文件settings
指定可以共享的管道和调度器
指定redis ip和地址(不设置默认本机) - redis相关操作配置
配置redis的配置文件 - 执行工程 scrapy runspider xxx.py
- 向调度器队列放入起始url:lpush 调度器名称 起始url
创建工程
scrapy startproject fbsPro
cd fbsPro
scrapy genspider -t crawl fbs www.xxx.com
修改爬虫文件
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
fr