当前位置:   article > 正文

scrapy-redis_scrapy-redis配置

scrapy-redis配置

创建项目和普通一样,更改一些配置即可,爬取逻辑也和普通差不多

import scrapy
from scrapy_redis.spiders import RedisSpider, RedisCrawlSpider
"""
dont_filet:request的参数
set():存放hash过得url,指纹算法
scrapy的调度器就是{ (dont_filet? & 过滤器(set))-> queue}
将请求队列放入redis服务器中,过滤器也放入redis中
scheduler,而是将redis中看成调度器,一切请求放入redis包括去重操作

redis set():也是这样,请求较多,压力较大
布隆过滤器:(改良版bitmap)查找效率高,省内存
    用将一个记录多个哈希算法算出对应的值,对用的值在位图(bitmap)均存在才表明存在
    装第三方插件,pip istall scrapy_redis_bloomfilter
    配置中把过滤器改变为SCHEDULER_CLASS = 
        "scrapy_redis.bloomfilter.dupefilter.RFPFDupeFilter" #过滤逻辑使用redis
        BOOLMFILTER_HSAH_NUMBER = 6 #哈希函数个数
        BOOLFILITER_BIT = 30 #数组长度2^30
所以要配置redis的pipeLine
1.redis相关配置
2.scrapy_redis相关配置:
    调度器(过滤器+队列):setting.py
    SCHEDULER = "scrapy_redis.scheduler.Schedular"
    SCHEDULER_PERSIST = True #true关闭时自动保存信息,断点续爬
    SCHEDULER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter" #过滤逻辑使用redis
3.管道:
    ITEM_PIPELINES = {
        'scrapy_redis.pipelines.RedisPipeline':300 #可选项
    }
4.最后需要向redis中添加start_url: lpush ty_start_url url
"""
class TySpider(scrapy.Spider):
    name = 'ty'
    allowed_domains = ['tianya.cn']
    # start_urls = ['http://tianya.cn/']
    # redis中的其实url键
    redis_key = "ty_start_url"

    def parse(self, response, **kwargs):
        pass

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号