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的基础概念和流程
        • scrapy的概念和流程
          • 学习目标:
          • 1 为什么学习scrapy?
          • 2 什么是scrapy?
          • 3 异步和非阻塞的区别
          • 4 scrapy的工作流程
          • 4.1 回顾之前的爬虫流程
          • 4.2 上面的流程可以改写为
          • 4.3 scrapy的流程
          • 其流程可以描述如下:
          • 注意:
          • 4.4 scrapy中每个模块的具体作用
          • 小结
      • scrapy的入门使用
      • scrapy发送翻页请求
      • scrapy的深入使用
      • crawlspider类的使用
      • scarpy中间件
      • scrapy模拟登陆
      • 小结
    • scrapy_redis

    • 爬虫的部署

    • 爬虫框架开发分析

    • 框架雏形实现

    • 框架功能完善

    • 框架功能升级

    • 项目实战

    • pywin32介绍

  • 前端教程

  • 教程
  • Python爬虫
  • scrapy框架
wangmings
2022-07-19
目录
scrapy的概念和流程
学习目标:
1 为什么学习scrapy?
2 什么是scrapy?
3 异步和非阻塞的区别
4 scrapy的工作流程
4.1 回顾之前的爬虫流程
4.2 上面的流程可以改写为
4.3 scrapy的流程
其流程可以描述如下:
注意:
4.4 scrapy中每个模块的具体作用
小结

scrapy的基础概念和流程

# scrapy的概念和流程

# 学习目标:
  1. 了解 scrapy的概念
  2. 掌握 scrapy框架的运行流程
  3. 掌握 scrapy框架的作用

# 1 为什么学习scrapy?

  1. scrapy不能解决剩下的10%的爬虫需求
  2. 能够让开发过程方便、快速
  3. scrapy框架能够让我们的爬虫效率更高

# 2 什么是scrapy?

文档地址:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html (opens new window)

Scrapy 使用了Twisted['twɪstɪd]异步网络框架,可以加快我们的下载速度。

Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能够快速的抓取。

# 3 异步和非阻塞的区别

前面我们说Twisted是一个异步的网络框架,经常我们也听到一个词语叫做非阻塞,那么他们有什么区别呢?

异步:调用在发出之后,这个调用就直接返回,不管有无结果;异步是过程。 非阻塞:关注的是程序在等待调用结果(消息,返回值)时的状态,指在不能立刻得到结果之前,该调用不会阻塞当前线程。

# 4 scrapy的工作流程

# 4.1 回顾之前的爬虫流程

# 4.2 上面的流程可以改写为

# 4.3 scrapy的流程

# 其流程可以描述如下:
  1. 调度器把requests-->引擎-->下载中间件--->下载器
  2. 下载器发送请求,获取响应---->下载中间件---->引擎--->爬虫中间件--->爬虫
  3. 爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器
  4. 爬虫提取数据--->引擎--->管道
  5. 管道进行数据的处理和保存
# 注意:
  • 图中绿色线条的表示数据的传递
  • 注意图中中间件的位置,决定了其作用
  • 注意其中引擎的位置,所有的模块之前相互独立,只和引擎进行交互
# 4.4 scrapy中每个模块的具体作用


# 小结

  1. scrapy的概念:Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架
  2. scrapy框架的运行流程以及数据传递过程:
    1. 调度器把requests-->引擎-->下载中间件--->下载器
    2. 下载器发送请求,获取响应---->下载中间件---->引擎--->爬虫中间件--->爬虫
    3. 爬虫提取url地址,组装成request对象---->爬虫中间件--->引擎--->调度器
    4. 爬虫提取数据--->引擎--->管道
    5. 管道进行数据的处理和保存
  3. scrapy框架的作用:通过少量代码实现快速抓取
  4. 掌握scrapy中每个模块的作用: 引擎(engine):负责数据和信号在不腰痛模块间的传递 调度器(scheduler):实现一个队列,存放引擎发过来的request请求对象 下载器(downloader):发送引擎发过来的request请求,获取响应,并将响应交给引擎 爬虫(spider):处理引擎发过来的response,提取数据,提取url,并交给引擎 管道(pipeline):处理引擎传递过来的数据,比如存储 下载中间件(downloader middleware):可以自定义的下载扩展,比如设置代理ip 爬虫中间件(spider middleware):可以自定义request请求和进行response过滤
  5. 理解异步和非阻塞的区别:异步是过程,非阻塞是状态
编辑 (opens new window)
小结
scrapy的入门使用

← 小结 scrapy的入门使用→

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