IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> scrapy和redis一起用,构成分布式爬虫 -> 正文阅读

[大数据]scrapy和redis一起用,构成分布式爬虫

scrapy是一个分布式的爬虫框架,如果像普通爬虫一样使用,那么毫无意义,如果要使用分布式爬虫,那么就需要配置Redis

安装及使用

在终端中使用
pip install scrapy_redis
即可安装
pip 会自动安装以来

使用Redis缓存网页并自动去重

由于Scrapy_redis已经封装了大部分的流程,所以我们使用它不会有任何难度。

  1. 启动redis

在Windows系统中,通过CMD的cd命令进入存放Redis的文件夹,并运行:
redis-server.exe
2. 修改爬虫

在前面的代码中,爬虫继承自scrapy.Spider这个父类。这是Scrapy里面最基本的一个爬虫类,只能实现基本的爬虫功能。现在需要把它替换掉,从而实现更高级的功能。首先需要导入支持Redis的爬虫父类并使用:
from scrapy_redis.spiders import RedisSpiderclass Exercise114Spider(RedisSpider):name = “exercise11_4”
`redis_key = ‘exercisell4spider : start_urls’

这里的redis_key实际上就是一个变量名,之后爬虫爬到的所有URL都会保存到Redis中这个名为“exercise114spider:start_urls”的列表下面,爬虫同时也会从这个列表中读取后续页面的URL。这个变量名可以任意修改,里面的英文冒号也不是必需的。不过一般习惯上会写成“爬虫名:start_urls”这种形式,这样看到名字就知道保存的是什么内容了。

此时已经建立了一个分布式爬虫,只不过现在只有一台计算机。

修改设置

爬虫已经被修改成分布式了,但是还差一步,还需要修改setting

  1. 修改scheduler
    首先是调度Scheduler的替换。这是Scrapy中的调度员。在settings.py中添加以下代码
    #Enables scheduling storing requests queue in redis.SCHEDULER = "scrapy_redis.scheduler.Scheduler"
  2. 去重
    # Ensure all spiders share same duplicates filter through redis.DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
  3. 修改调度
    1. 队列
      SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.SpiderQueue’

    2. SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.SpiderStack’
    3. 优先级队列
      SCHEDULER_QUEUE_CLASS = ‘scrapy_redis.queue.SpiderPriorityQueue’
    4. 不清理Redis队列
      crawls.SCHEDULER_PERSIST =True

如果这一项为True,那么Redis中的URL不会被Scrapy_redis清理掉。这样的好处是,爬虫停止了再重新启动,它会从上次暂停的地方开始继续爬取。如果设置成了False,那么Scrapy_redis每一次读取了URL以后,就会把这个URL删除。爬虫暂停以后再重新启动,它会重新开始爬。由于现在的爬虫和Redis在同一台计算机上面运行,所以可以不需要配置Redis的信息。Scrapy_redis会默认Redis就运行在现在这台计算机上,IP和端口也都是默认的127.0.0.1和6379。

果Redis不在本地的话,就需要将它们写出来

REDIS_HOST = '127.0.0.1#修改为Redis的实际IP地址
REDIS_PORT = 6379 #修改为Redis的实际端

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-03 01:16:27  更:2022-02-03 01:16:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 13:30:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码