scrapy_redis学习(分布式爬虫)

scrapy_redis在scrapy的基础上有了更强大的功能:

request去重,爬虫持久化,实现分布式
与scrapy标准写法的区别:

1、继承的类不同
2、增加redis_key 3、没有start_urls

一、RedisSpider

scrapy genspider suning suning.com

# 继承自RedisSpider
from scrapy_redis.spiders import RedisSpider

class SuningSpider(RedisSpider):

redis_key ="suning"
name = 'suning'
allowed_domains = ['book.suning.com']
# start_urls = ['https://book.suning.com/?safp=d488778a.10038.0.8cca61ce53']

def parse(self, response):
    """
    获取苏宁图书的所有图书大标题分类与小标题分类
    

    """

二、RedisCrawlSpider

适用于可实现自动翻页

scrapy genspider -t crawl suning suning.com

# 继承自RedisCrawlSpider
from scrapy_redis.spiders import RedisCrawlSpider

class Suning2Spider(RedisCrawlSpider):
    redis_key = "suning"
    name = 'suning2'
    allowed_domains = ['book.suning.com']
    # start_urls = ['http://book.suning.com']
    
# LinkExtractor定义了一个url的提取规则 ,满足条件的交给callback函数处理
rules = (
    Rule(LinkExtractor(allow=r'Items/'), callback='parse_item', follow=True),
   
)

def parse_item(self, response):
	pass

settings.py

添加四行设置信息,redis_key, 和调度器
“”"
打开item_pipelines 通道
“”"
ITEM_PIPELINES = {
‘myscrapy.pipelines.MyscrapyPipeline’: 300,
# ‘scrapy_redis.pipelines.RedisPipeline’: 400, # scrapy_redis实现item保存到redis的pipeline

}

REDIS_URL = 'redis://127.0.0.1:6379'  # 指定redis的地址
# redis的地址也可这样书写
# REDIS_HOST = "192.168.207.134"
# REDIS_PORT = 6379

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"  # 指定哪个去重方法给request对象去重
SCHEDULER = "scrapy_redis.scheduler.Scheduler"  # 指定scheduler队列
SCHEDULER_PERSIST = True  # 队列中的内容是否持久保存,为False时在关闭redis时清空redis

执行爬虫后redis会多出三个键:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值