概念:搭建一个分布式的机群,让其对一组资源进行分布式爬取。
作用:提升爬虫的效率
1.安装scrapy-redis的组件
2.scrapy-redis组件的作用: 可以给原生的scrapy框架提供可以被共享的调度器和管道。
1.创建一个工程
2.创建一个基于CrawlSpider的爬虫文件。
3.修改当前的爬虫文件:
1. 导包:
from scrapy_redis.spiders import RedisCrawlSpider
2 将start_urls和allowed_domains进行注释
3 添加一个新的属性值:redis_key = 'xxxx' 可以被共享的调度器名称
4 编写数据解析相关的工作
5 将当前爬虫继承的父类改写成 RedisCrawlSpider
4.修改settings配置文件
ITEM_PIPELINES = {
'scrapy_redis.pipelines.RedisPipeline':400
}
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
SCHEDULER_PERSIST = True
REDIS_HOST = 'redis的服务器ip地址'
REDIS_POST = '6379'
5.redis相关操作配置:
6 执行工程:scrapy runspider xxx.py
7. 像调度器队列放入一个起始的url:调度器的队列在redis客户端中: lpush xxx(redis_key) www.xxx.com
8. 爬取到的数据储存在redis的proName:items这个数据结构当中
9.查看数据:在redis的客户端输入:1. keys* 2.lrange xxx:items 0 -1 (显示爬到的数据) 3. llen xxx:items(看爬了多少数据)
Original: https://blog.csdn.net/RayMand168/article/details/116175002
Author: 你很棒滴
Title: Scrapy-redis 实现分布式
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/792374/
转载文章受原作者版权保护。转载请注明原作者出处!