Wang's blog Wang's blog
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Wang Mings

跟随大神,成为大神!
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python爬虫

    • 爬虫的基础知识

    • 请求的发送方法

    • 数据提取方法

    • 高性能爬虫

    • selenium

    • 反爬以及解决方案

    • MONGODB数据库

    • scrapy框架

    • scrapy_redis

      • scrapy_redis分布式原理
        • scrapy_redis分布式原理
          • 学习目标
          • 1 scrapy_redis是什么
          • 2 为什么要学习scrapy_redis
          • 3 scrapy_redis的原理分析
          • 3.1 回顾scrapy的流程
          • 3.2 scrapy_redis的流程
          • 4 对于redis的复习
          • 4.1 redis是什么
          • 4.2 redis服务端和客户端的启动
          • 4.3 redis中的常见命令
          • 4.4 redis命令的复习
          • 小结
      • scrapy_redis实现增量式爬虫
      • scrapy_redis实现分布式爬虫
      • 小结
    • 爬虫的部署

    • 爬虫框架开发分析

    • 框架雏形实现

    • 框架功能完善

    • 框架功能升级

    • 项目实战

    • pywin32介绍

  • 前端教程

  • 教程
  • Python爬虫
  • scrapy_redis
wangmings
2022-07-19
目录

scrapy_redis分布式原理

# scrapy_redis分布式原理

# 学习目标
  1. 了解 scarpy_redis的概念和功能
  2. 了解 scrapy_redis的原理
  3. 了解 redis数据库操作命令

在前面scrapy框架中我们已经能够使用框架实现爬虫爬取网站数据,如果当前网站的数据比较庞大, 我们就需要使用分布式来更快的爬取数据

# 1 scrapy_redis是什么

Scrapy_redis : Redis-based components for Scrapy.

Github地址:https://github.com/rmax/scrapy-redis (opens new window)

在这个地址中存在三个demo,后续我们对scrapy_redis的学习会通过这三个demo展开

# 2 为什么要学习scrapy_redis

Scrapy_redis在scrapy的基础上实现了更多,更强大的功能,具体体现在:

  • 请求对象的持久化
  • 去重的持久化
  • 和实现分布式

# 3 scrapy_redis的原理分析

# 3.1 回顾scrapy的流程

那么,在这个基础上,如果需要实现分布式,即多台服务器同时完成一个爬虫,需要怎么做呢?

# 3.2 scrapy_redis的流程
  • 在scrapy_redis中,所有的带抓取的对象和去重的指纹都存在所有的服务器公用的redis中

  • 所有的服务器公用一个redis中的request对象

  • 所有的request对象存入redis前,都会在同一个redis中进行判断,之前是否已经存入过

  • 在默认情况下所有的数据会保存在redis中

具体流程如下:

# 4 对于redis的复习

由于时间关系,大家对redis的命令遗忘的差不多了, 但是在scrapy_redis中需要使用redis的操作命令,所有需要回顾下redis的命令操作

# 4.1 redis是什么

redis是一个开源的内存型数据库,支持多种数据类型和结构,比如列表、集合、有序集合等,同时可以使用redis-manger-desktop等客户端软件查看redis中的数据,关于redis-manger-desktop的使用可以参考扩展阅读

# 4.2 redis服务端和客户端的启动
  • /etc/init.d/redis-server start 启动服务端
  • redis-cli -h <hostname> -p <端口号> 客户端启动
# 4.3 redis中的常见命令
  1. select 1 切换db
  2. keys * 查看所有的键
  3. tyep 键 查看键的类型
  4. flushdb 清空db
  5. flushall 清空数据库
# 4.4 redis命令的复习

redis的命令很多,这里我们简单复习后续会使用的命令


# 小结

  1. scarpy_redis的分布式工作原理
    • 在scrapy_redis中,所有的带抓取的对象和去重的指纹都存在所有的服务器公用的redis中
    • 所有的服务器公用一个redis中的request对象
    • 所有的request对象存入redis前,都会在同一个redis中进行判断,之前是否已经存入过
编辑 (opens new window)
小结
scrapy_redis实现增量式爬虫

← 小结 scrapy_redis实现增量式爬虫→

最近更新
01
theme-vdoing-blog博客静态编译问题
09-16
02
搜索引擎
07-19
03
友情链接
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式