赞
踩
创建项目和普通一样,更改一些配置即可,爬取逻辑也和普通差不多
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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。