首页 > 数据库 >Scrapy: scrapy_redis

Scrapy: scrapy_redis

时间:2023-08-07 13:12:00浏览次数:29  
标签:__ self redis scrapy Scrapy kwargs response

 1 # 安装
 2 pip3 install scrapy_redis
 3 # 源码
 4 https://github.com/rmax/scrapy-redis.git
 5 # 文档
 6 https://github.com/rmax/scrapy-redis
 7 
 8 # 配置说明: https://github.com/rmax/scrapy-redis/wiki/Usage
 9 REDIS_HOST = 'localhost'
10 REDIS_PORT = 6379
11 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
12 SCHEDULER = "scrapy_redis.scheduler.Scheduler"
13 # 可暂停Spider
14 SCHEDULER_PERSIST = True
15 # SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
16 # SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"
17 # SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"
18 
19 ITEM_PIPELINES = {
20     'scrapy_redis.pipelines.RedisPipeline': 400,
21 }
22 
23 # Spider
24 from scrapy_redis.spiders import RedisSpider
25 
26 class BaiduSpider(RedisSpider):
27     """Spider that reads urls from redis queue (myspider:start_urls)."""
28     name = 'baiu'
29     redis_key = 'myspider:baiu'
30     # allowed_domains = ['baiu.com']
31 
32     def __init__(self, *args, **kwargs):
33         # Dynamically define the allowed domains list.
34         domain = kwargs.pop('domain', '')
35         self.allowed_domains = filter(None, domain.split(','))
36         super(BaiduSpider, self).__init__(*args, **kwargs)
37 
38     def parse(self, response):
39         print(response.text)
40         # return {
41         #     'name': response.css('title::text').extract_first(),
42         #     'url': response.url,
43         # }
44 
45 # CrawlSpider
46 from scrapy.linkextractors import LinkExtractor
47 from scrapy.spiders import CrawlSpider, Rule
48 from scrapy_redis.spiders import RedisCrawlSpider
49 
50 
51 class FanqienovelSpider(RedisCrawlSpider):
52     name = 'fanqienovel'
53     redis_key = 'mycrawler:fanqienovel'
54     # allowed_domains = ['baiu.com']
55 
56     rules = (
57         # follow all links
58         Rule(LinkExtractor(), callback='parse_page', follow=True),
59     )
60 
61     def __init__(self, *args, **kwargs):
62         # Dynamically define the allowed domains list.
63         domain = kwargs.pop('domain', '')
64         self.allowed_domains = filter(None, domain.split(','))
65         super(FanqienovelSpider, self).__init__(*args, **kwargs)
66 
67     def parse_page(self, response):
68         print(response.text)
69         return {
70             'name': response.css('title::text').extract_first(),
71             'url': response.url,
72         }

 

标签:__,self,redis,scrapy,Scrapy,kwargs,response
From: https://www.cnblogs.com/watermeloncode/p/17611166.html

相关文章

  • 解决报错:Redis ERR unknown command ‘FLUSHDB‘
    RedisERRunknowncommand‘FLUSHDB’报错信息:ERRunknowncommand`flushdb`ERRunknowncommand`flushall`解决方案:我的redis版本是5.0.7修改配置文件打开/etc/redis/redis.conf文件,将下面两行代码注释掉rename-commandFLUSHALL37_dba_FLUSHALLrename-commandFLUSHDB......
  • Redis 2.8主从集群及故障自动切换(转载)
    Redis2.8主从集群及故障自动切换Redis官网:https://redis.io/一、架构操作系统:Debian7Master:127.0.0.1,端口:6379Slave1::127.0.0.1,端口:6378Slave2::127.0.0.1,端口:6377Sentinel1:127.0.0.1,端口:26379Sentinel2:127.0.0.1,端口:26378Sentinel3:127.0.0.1,端口:26377二、主从配置1、下载redis压......
  • 两台服务器redis 3.0.5分布式集群安装部署
    两台服务器redis3.0.5分布式集群安装部署目前redis支持的cluster特性:1):节点自动发现2):slave->master选举,集群容错3):Hotresharding:在线分片4):集群管理:clusterxxx5):基于配置(nodes-port.conf)的集群管理6):ASK转向/MOVED转向机制.一、redis集群安装两台电脑:   192.......
  • Python:Spider爬虫工程化入门到进阶(1)创建Scrapy爬虫项目
    Python:Spider爬虫工程化入门到进阶系列:Python:Spider爬虫工程化入门到进阶(1)创建Scrapy爬虫项目Python:Spider爬虫工程化入门到进阶(2)使用SpiderAdminPro管理scrapy爬虫项目本文通过简单的小例子,亲自动手创建一个Spider爬虫工程化的Scrapy项目本文默认读着已经掌握基本的Python编程......
  • redis
    dockerrun--namewltjzbjg_redis-p7001:6379-v/root/docker/redis/data:/data-v/root/docker/redis/conf/redis.conf:/etc/redis/redis.conf-dredisredis-server/etc/redis/redis.confdockerrun--namelmqredis-p6379:6379-v/root/docker/redis/data:/dat......
  • Redis概念
    1.数据淘汰策略-noeviction:返回错误当内存限制达到并且客户端尝试执行会让更多内存被使用的命令(大部分的写入指令,但DEL和几个例外)allkeys-lru:尝试回收最少使用的键(LRU),使得新添加的数据有空间存放。volatile-lru:尝试回收最少使用的键(LRU),但仅限于在过期集合的键,使得......
  • Redis Pipeline管道技术
    1.什么是pipelinePipeline是Redis提供的一种批量请求机制,可以在client端对多条命令进行打包,然后一次性发送给服务器,避免了多次网络往返的开销。2.pipeline的优势为了解释pipeline的作用,我们先思考一个问题:如果客户端需要依次执行多条Redis命令,该如何处理?客户端一次执行一条......
  • Spring boot集成Redis
    在开发中,放到缓存中的数据我们都要给过期时间,使其可以在系统即使没有主动更新数据也能自动触发数据加载的流程,避免业务奔溃导致的数据永久不一致的问题1、引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-......
  • redis 如何解决缓存雪崩、击穿、穿透难题
    引言redis作为一门热门的缓存技术,引入了缓存层,就会有缓存异常的三个问题,分别是缓存击穿、缓存穿透、缓存雪崩。我们用本篇文章来讲解下如何解决!缓存击穿缓存击穿:指的是缓存中的某个热点数据过期了,但是此时大量的并发请求访问这个key的值,此时因为缓存过期无法从缓存中获取,直......
  • Redis 之分布式锁的实现
    引言分布式锁大家应该不陌生,在很多大厂面试的时候,面试官们都很喜欢问这个问题。我们在系统中修改已有数据时,需要先读取,然后进行修改保存,此时很容易遇到并发问题。由于修改和保存不是原子操作,在并发场景下,部分对数据的操作可能会丢失。在单服务器系统我们常用本地锁来避免并发带......