Scrapy----Scrapy架构及工作流程

2023-11-07

【原文链接】Scrapy----Scrapy架构及工作流程

一、Scrapy架构图

scrapy的架构图如下,红色箭头表示工作流程

二、Scrapy的组成

  • Scrapy Engine

Scrapy Engine主要用来协调数据流在Scrap各个组件之间工作的

  • Schedule
    执行的调度器,简单点来说可以理解为一个队列

  • Downloader
    下载器,简单点理解就是执行request的组件

  • Spiders
    负责提供第一个url,并在后续response中解析新的需要请求的url

  • Item Piplines
    负责对获取到的响应数据进行数据清洗,然后对数据进行存储,可以存储到多个中存储类型中看比如文件、数据库等

Scrapy主要就是这五个部分,当然还有一些中间件,主要在两个组件之间锁一些中间处理

三、Scrapy工作流程

(1)Spiders 将第一条url发送给Scrapy Engine

(2)Scrapy Engine把请求发送给Scheduler调度器

(3)Scheduler调度器调度好执行顺序后传递给Scrapy Engine

(4)Scrapy Engine根据Schedule的调度,将request请求发送给Downloader

(5)Downloader请求完成后,将请求结果返回给Scrapy Engine

(6)Scrapy Engine收到响应结果后,将响应结果传递给Spider,Spider可根据返回结果分析是否有新的的url传递给Scrapy 继续请求

(7)Spider将分析结果传递给Scrapy Engine

(8)Scrapy Engine将响应结果继续传递给Item Piplines供对响应数据进行清洗架构并存储

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Scrapy----Scrapy架构及工作流程 的相关文章

  • urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='localhost', port=59587): 使用 Selenium GeckoDriver Firefox 的 url 超出了最大重

    黎明时我的代码工作得很好 但是今天当我醒来时它不再工作了 我没有更改任何代码行 我还检查了 Firefox 是否更新了 不 它没有 我没有想法可能是什么 我一直在阅读 urllib 文档 但找不到任何信息 from asyncio wind
  • Scrapy:测试内联请求的有效方法

    我使用 scrapy inline requests 库编写了一个蜘蛛 所以我的蜘蛛中的解析方法看起来像这样 inline requests def parse self response1 item MyItem loader ItemL
  • Scrapy 阿拉伯字母返回一些奇怪的东西

    我在用scrapy关于阿拉伯字母和英文字母 英文字母完美地工作 然而 阿拉伯字母显示如下 gs300 2006 u0644 u0643 u0632 u0633 u062c u064a 有什么帮助吗 我正在使用 python 和 scrapy
  • scrapy中如何处理302重定向

    我在抓取网站时收到来自服务器的 302 响应 2014 04 01 21 31 51 0200 ahrefs h DEBUG Redirecting 302 to
  • 抓取多个帐户,即多次登录

    我可以成功抓取单个帐户的数据 我想在一个网站上抓取多个帐户 这意味着多次登录 如何管理登录 注销 您可以在每个帐户会话中使用多个 cookiejar 并行抓取多个帐户 请参阅 cookiejar 请求元密钥http doc scrapy o
  • 在同一进程中多次运行Scrapy

    我有一个网址列表 我想抓取其中的每一个 请注意 将此数组添加为start urls不是我正在寻找的行为 我希望它在单独的爬网会话中一一运行 我想在同一个进程中多次运行Scrapy 我想将 Scrapy 作为脚本运行 如常见做法 https
  • 如何从网站中抓取动态内容?

    所以我使用 scrapy 从亚马逊图书部分抓取数据 但不知何故我知道它有一些动态数据 我想知道如何从网站中提取动态数据 到目前为止我已经尝试过以下方法 import scrapy from items import AmazonsItem
  • Scrapy 未通过请求回调从项目中的已抓取链接返回附加信息

    基本上 下面的代码会抓取表格的前 5 项 其中一个字段是另一个 href 单击该 href 会提供更多信息 我想收集这些信息并将其添加到原始项目中 所以parse应该将半填充的项目传递给parse next page然后刮掉下一位并返回完成
  • Selenium 与 scrapy 的动态页面

    我正在尝试使用 scrapy 从网页中抓取产品信息 我要抓取的网页如下所示 从包含 10 个产品的 Product list 页面开始 单击 下一步 按钮将加载接下来的 10 个产品 两个页面之间的 URL 不会改变 我使用 LinkExt
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • Python Scrapy:allowed_domains从数据库添加新域

    我需要向 allowed domains 添加更多域 因此我没有收到 已过滤的异地请求 我的应用程序获取从数据库获取的网址 因此我无法手动添加它们 我试图覆盖蜘蛛init 像这样 def init self super CrawlSpide
  • 在flatpak项目中使用scrapy脚本

    我正在构建一个 flatpak 构建的项目 我有一个按钮 当单击它时我希望它运行 scrapy 脚本来抓取数据 窗口用户界面
  • 如何使用scrapy检查网站是否支持http、htts和www前缀

    我正在使用 scrapy 来检查某些网站是否工作正常 当我使用http example com https example com or http www example com 当我创建 scrapy 请求时 它工作正常 例如 在我的pa
  • 如何添加剧作家的等待时间

    我正在将 scrapy 与 playwright 集成 但发现自己在单击后添加计时器时遇到困难 因此 当我点击后截取页面的屏幕截图时 它仍然挂在登录页面上 如何集成计时器以便页面等待几秒钟直到页面加载 选择器 onetrust close
  • 避免由于相对 URL 导致的错误请求

    我正在尝试使用Scrapy抓取一个网站 并且我想要抓取的每个页面的url都是使用这种相对路径编写的 a href en item to scrap html Link a 现在 在我的浏览器中 这些链接可以工作 您可以访问类似的网址http
  • 打印 scrapy 请求的“响应”

    我正在尝试学习 scrapy 在遵循教程的同时 我正在尝试进行细微的调整 我想简单地从请求中获取响应内容 然后我会将响应传递到教程代码中 但我无法发出请求并获取响应内容 建议就好 from scrapy http import Respon
  • Scrapy - 不会爬行

    我正在尝试运行递归爬行 由于我编写的爬行不能正常工作 因此我从网络上提取了一个示例并进行了尝试 我真的不知道问题出在哪里 但是爬行没有显示任何错误 谁能帮我这个 另外 是否有任何逐步调试工具可以帮助理解蜘蛛的爬行流程 非常感谢任何与此相关的
  • Scrapy在页面上找不到表单

    我正在尝试编写一个自动登录的蜘蛛这个网站 https www athletic net account login ReturnUrl 2Fdefault aspx 但是 当我尝试使用scrapy FormRequest from resp
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext

随机推荐

  • 黑马程序员并发笔记-juc并发以及锁原理-总集篇-结合自己的思考和心得完整版

    黑马程序员并发编程笔记 一 进程的概念 黑马程序员并发编程笔记 二 java线程基本操作和理解 java并发编程笔记 三 管程 一 java并发编程笔记 三 管程 二 java并发编程笔记 三 管程 三 java并发编程笔记 三 管程 四
  • 同步和异步的区别

    同步 同指一个进程在执行某个请求的时候 若该请求需要一段时间才能返回信息 那么这个进程将会一直等待下去 直到收到返回信息才继续执行下去 异步 是指进程不需要一直等下去 而是继续执行下面的操作 不管其他进程的状态 当有消息返回时系统会通知进程
  • 关于socket的各种错误码

    1 INVALID SOCKET 表示该 socket fd 无效 如 accept 2 或 socket 2 等在创建socketfd时 int m socket socket AF INET SOCK STREAM 0 if m soc
  • Python操作MySQL数据库

    1 查询操作 注意 Python查询Mysql使用 fetchone 方法获取单条数据 使用fetchall 方法获取多条数据 fetchone 该方法获取下一个查询结果集 结果集是一个对象 fetchall 接收全部的返回结果行 rowc
  • SpringBoot日志

    application properties logging level com atguigu trace spring profiles active dev logging path 不指定路径在当前项目下生成springboot l
  • 启用springboot security后登录web页面需要用户名和密码之默认的用户名和密码

    问题 注意 本人使用的Spring Boot 2 0 2 对1 5 x系列未必有用 官方文档在这里 直接解决办法 0 移除spring boot starter security依赖 如果没有实际使用security的功能 可以直接移除sp
  • RHEL 7.3 根密码重置

    环境 win10 RedHat Enterprise Linux 7 2 目的 重置Root 用户密码 操作 1 界面选择首项 e 进入编辑界面 2 linuxefi vmlinuz 3 10 0 327 末尾UTF 8 后添加 rd br
  • JS:颜色的格式转换(rgb、十六进制)

    简介 偶尔需要转换颜色格式 然后使用 如rgb和十六进制之间的互相转换 具体实现 使用 import TzColorExchangeStyle from colorExchange js console log TzColorExchang
  • 搜狗双拼口诀

    今天给大家介绍一下搜狗双拼口诀 掌握搜狗双拼输入法的难点是将其26个韵母对应的字母键位记忆到脑海中 比如 自然码方案的ang韵母对应于H键 ao韵母对应于K键 如果你没记住对应关系 那么搜狗双拼输入也就无从谈起了 通过搜狗双拼口诀 你可以很
  • IDEA添加自定义浏览器

    比如添加搜狗浏览器 1 打开setting 2 Tools gt Web Browsers 点 添加浏览器 3 点击文件夹图标 修改浏览器路径 4 找到搜狗浏览器的exe文件 5 修改浏览器的名字 然后点ok 6 完成 运行直接点击图标即可
  • Windows下php和apache的安装及启动

    php版本 php5 6 httpd版本 apache2 4 php5 6 在D盘下创建php文件夹 并在其下解压压缩包 修改系统变量PATH 末尾新增 D php D php ext httpd2 4 在D盘下创建Apache24文件夹
  • 操作系统复习知识点(第三章)

    处理机调度 1 高级调度 中级调度 低级调度 高级调度 根据某种算法 把外存上处于后备队列中的那些作业调入内存 作业调度 中级调度 为了提高内存利用率和系统吞吐量 使那些暂时不能运行的进程不再占用内存资源 将它们调至外存等待 把进程状态改为
  • HDU--1233:还是畅通工程 (并查集 & 最小生成树Prim)

    1 题目源地址 http acm hdu edu cn showproblem php pid 1233 2 简单思路 先对村庄距离从小到大排序 然后使用并查集的查找 一边查找一边加上村庄之间的距离 从而得到可以走通所有村庄的最短距离 3
  • 根据年月日计算星期几的函数

    大部分日期计算正常 2014 04 01 星期2 计算出来的星期不正确 原因 计算出来的 w可能出现负值 求负数的余数需要特殊处理 需要按数论的计算方式求余数 网上很多代码存在此问题 少数日期计算不正确 解决 负数先转为正数求余 然后求补
  • Android源码编译环境搭建

    一 前言 Google自 2021 年 6 月 22 日起 不再支持在 MacOS 上进行Android平台开发 某些芯片厂家提供的Android SDK不支持低版本的Ubuntu 16 04 LTS及以下 故本篇文章以Ubuntu18 0
  • GNU AWK

    awk awk官方给出的是 pattern scanning and processing language即模式扫描处理语言 我们CentOS一般用的是GNU AWK 官方给出的语法有五种 我们只举例前两种使用格式 下面是语法 gawk
  • 使用java geotools进行坐标转换

    java geotools支持不同的坐标系之间进行转换 只需要转换的时候指定坐标系即可 pom依赖文件如下
  • 现在的00后,实在是太卷了

    现在的小年轻真的卷得过分了 前段时间我们公司来了个00年的 工作没两年 跳槽到我们公司起薪18K 都快接近我了 后来才知道人家是个卷王 从早干到晚就差搬张床到工位睡觉了 最近和他聊了一次天 原来这位小老弟家里条件不太好 一大家子指望他一个人
  • Vulnhub入门实战-Wakanda

    下载链接 描述 1 探测主机的IP地址 2 使用nmap查看靶机开放端口 开放了4个端口 老样子先从http下手 3 进去发现没什么可以点的 于是进行目录扫描 状态码都是200 但是size为0 所以返回的都是空页面 查看主页源代码 发现一
  • Scrapy----Scrapy架构及工作流程

    原文链接 Scrapy Scrapy架构及工作流程 一 Scrapy架构图 scrapy的架构图如下 红色箭头表示工作流程 二 Scrapy的组成 Scrapy Engine Scrapy Engine主要用来协调数据流在Scrap各个组件