scrapy的概念作用和工作流程

1. scrapy的概念

Scrapy是一个Python编写的开源网络爬虫框架。它是一个被设计用于爬取网络数据、提取结构性数据的框架。

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

Scrapy文档地址:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html

2. scrapy框架的作用

少量的代码,就能够快速的抓取

3. scrapy的工作流程

3.1 回顾之前的爬虫流程

在这里插入图片描述

3.2 上面的流程可以改写为

在这里插入图片描述

3.3 scrapy的流程

在这里插入图片描述

其流程可以描述如下:
  1. 爬虫中起始的url构造成request对象–>爬虫中间件–>引擎–>调度器
  2. 调度器把request–>引擎–>下载中间件—>下载器
  3. 下载器发送请求,获取response响应---->下载中间件---->引擎—>爬虫中间件—>爬虫
  4. 爬虫提取url地址,组装成request对象---->爬虫中间件—>引擎—>调度器,重复步骤2
  5. 爬虫提取数据—>引擎—>管道处理和保存数据
注意:
  • 图中中文是为了方便理解后加上去的
  • 图中绿色线条的表示数据的传递
  • 注意图中中间件的位置,决定了其作用
  • 注意其中引擎的位置,所有的模块之前相互独立,只和引擎进行交互
3.4 scrapy的三个内置对象
  • request请求对象:由url method post_data headers等构成
  • response响应对象:由url body status headers等构成
  • item数据对象:本质是个字典
3.5 scrapy中每个模块的具体作用

在这里插入图片描述

注意:
  • 爬虫中间件和下载中间件只是运行逻辑的位置不同,作用是重复的:如替换UA等

小结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/433974.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux中断 -- 中断路由、优先级、数据和标识

目录 1.中断路由 2.中断优先级 3.中断平衡 4.Linux内核中重要的数据结构 5.中断标识 承前文,本文从中断路由、优先级、数据结构和标识意义等方面对Linux内核中断进行一步的解析。 1.中断路由 Aset affinity flow GIC文中有提到SPI类型中断的路由控制器寄存器为…

Prometheus 架构全面解析

在本指南中,我们将详细介绍 Prometheus 架构。 Prometheus 是一个用 Golang 编写的开源监控和告警系统,能够收集和处理来自各种目标的指标。您还可以查询、查看、分析指标,并根据阈值收到警报。 此外,在当今世界,可观…

风口抓猪-借助亚马逊云科技EC2服务器即刻构建PalWorld(幻兽帕鲁)私服~~~持续更新中

Pocketpair出品的生存类游戏《幻兽帕鲁》最近非常火,最高在线人数已逼近200万。官方服务器亚历山大,游戏开发商也提供了搭建私人专用服务器的方案,既可以保证稳定的游戏体验,也可以和朋友一起联机游戏,而且还能自定义经…

【PyTest】玩转HTML报告:修改、汉化和优化

前言 Pytest框架可以使用两种测试报告,其中一种就是使用pytest-html插件生成的测试报告,但是报告中有一些信息没有什么用途或者显示的不太好看,还有一些我们想要在报告中展示的信息却没有,最近又有人问我pytest-html生成的报告&a…

Ubuntu findfont: Font family ‘SimHei‘ not found.

matplotlib中文乱码显示 当我们遇到这样奇怪的问题时, 结果往往很搞笑 尝试1不行 Stopping Jupyter Installing font-manager: sudo apt install font-manager Cleaning the matplotlib cache directory: rm ~/.cache/matplotlib -fr Restarting Jupyter. 尝试2 This work fo…

vue实现甘特图

目录 实现效果 一、安装依赖 二、使用 二、绕过license 实现效果 一、安装依赖 npm i --save vue-gantt-schedule-timeline-calendar 实现甘特图需先安装上述依赖,安装依赖实际上是通过gantt-schedule-timeline-calendar来实现的。所以node_module中因包含以下…

openssl3.2 - 测试程序的学习 - test\sanitytest.c

文章目录 openssl3.2 - 测试程序的学习 - test\sanitytest.c概述笔记添加好实现的工程效果END openssl3.2 - 测试程序的学习 - test\sanitytest.c 概述 openssl3.2 - 测试程序的学习 重建工程参考 makefile, 将该加的实现加入vs2019工程, 不能无脑添加, 否则编译不过. 这个工…

掌握可视化大屏:提升数据分析和决策能力的关键(上)

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Nginx,安装及基础配置

目录 下载 Nginx Nginx 目录 配置文件 主要配置 events server 启动与关闭 方法一 方法二 方法三 查看是否启动成功 下载 Nginx 官网中文网 Nginx 目录 conf: 存放 核心配置文件 contrib: 存放 语法支持脚本 docs: …

浪花 - 响应拦截器(强制登录)

1. 配置响应拦截器 import axios from axios;const myAxios axios.create({baseURL: http://localhost:8080/api/, });myAxios.defaults.withCredentials true;// 请求拦截器 myAxios.interceptors.request.use(function (config) {// Do something before request is sentc…

Web3 游戏开发者的数据分析指南

作者:lesleyfootprint.network 在竞争激烈的 Web3 游戏行业中,成功不仅仅取决于游戏的发布,还需要在游戏运营过程中有高度的敏锐性,以应对下一次牛市的来临。 人们对 2024 年的游戏行业充满信心。A16Z GAMES 和 GAMES FUND ONE …

SpringBoot activemq收发消息、配置及原理

SpringBoot集成消息处理框架 Spring framework提供了对JMS和AMQP消息框架的无缝集成,为Spring项目使用消息处理框架提供了极大的便利。 与Spring framework相比,Spring Boot更近了一步,通过auto-configuration机制实现了对jms及amqp主流框架…