组件:
Scrapy Engine
引擎,负责控制数据流在系统中所有组件中流动,并在相应动作发生时触发事件
调度器(Scheduler)
调度器从引擎接受request并将他们入队,以便之后引擎请求他们时提供给引擎
下载器(Downloader)
获取页面数据并提供给引擎,而后提供给spider
Spiders
Spider是Scrapy用户编写用于分析response并提取item(即获取到的item)
或额外跟进的URL的类,每个spider负责处理一个特定(或一些)网站
Item Pipeline
Item Pipeline负责处理被提取出来的item,典型的处理有清理、验证及持久化
(例如存取到数据库中)
下载器中间件(Downloader moddlewares)
下载器中间件是在引擎及下载器之间的特定钩子,
处理Downloader传递给引擎的response
(包括引擎传递给下载器的Request);
(处理下载请求部分)
Spider中间件(Spider Middlewares)
Spider中间件是在引擎及Spider之间的特定钩子,
处理spider的输入(response)和输出(item和requests)
(处理解析部分)

举例----实例
Scrapy中的数据流由执行引擎控制,过程如下:
1.引擎打开一个网址(open a domain)找到处理该网站的spider并向spider请求第一个要爬取的(URL)
2.引擎从Spider中获取到第一个要爬取的URL并在调度器中以Request调度
3.引擎向调度器请求下一个要爬取的URL
4.调度器返回下一个要爬取的URL给引擎,引擎将URL通过下载中间件(request)给下载器
5.页面下载完毕,下载器生成一个该页面Response,并将其通过下载中间件(response)发送给引擎
6.引擎从下载器接收Response并通过Spider中间件(输入方向)发送给Spider处理
7.Spider处理Response并返回爬取到的Item及(跟进的)新的Request给引擎
8.引擎将(Spider返回的)爬取到的Item给Item Pipeline,将(Spider返回的)Request给调度器
9.(从第二步)重复直到调度器没有更多request,引擎关闭该网站

DownloaderMiddleware、SpiderMiddleware的使用
DownloaderMiddleware主要处理请求Request发出去和结果Response返回的一些回调,

比如说你要加UserAgent,使用代理,修改refferer,添加cookie,或者请求异常超时处理啥的

主要有几个方法:

process_request(request, spider)
当每个request通过下载中间件时,该方法被调用,这里可以修改UA,代理,Refferer

process_response(request, response, spider) 这里可以看返回是否是200加入重试机制

process_exception(request, exception, spider) 这里可以处理超时

SpiderMiddleware主要处理解析Item的相关逻辑修正,比如数据不完整要添加默认,增加其他额外信息等
process_spider_input(response, spider)当response通过spider中间件时,该方法被调用,处理该response。

process_spider_output(response, result, spider)
当Spider处理response返回result时,该方法被调用。

process_spider_exception(response, exception, spider)
当spider或(其他spider中间件的) process_spider_input() 出异常时, 该方法被调用。

Scrapy Engine相关推荐

  1. Python:Scrapy 框架简单介绍

    Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非 ...

  2. python爬虫之Scrapy框架的post请求和核心组件的工作 流程

    python爬虫之Scrapy框架的post请求和核心组件的工作 流程 一 Scrapy的post请求的实现 在爬虫文件中的爬虫类继承了Spider父类中的start_urls,该方法就可以对star ...

  3. 经典爬虫:用Scrapy爬取百度股票

    前言 今天我们编写一个用 Scrapy 框架来爬取百度股票的代码,之前写过一篇爬取百度股票的文章(点我),代码的逻辑和这篇文章的逻辑是一样的,用到的解析器不同罢了. Scrapy 爬虫框架 Scrap ...

  4. python scrapy框架原理_Scrapy框架的工作原理是什么?

    Scrapy框架的工作原理是什么? Scrapy架构 学习Scrapy框架,从理解它的架构开始.图1所示是Scrapy的架构图. 从图1可知,Scrapy框架主要包含以下组件: (1)Scrapy E ...

  5. scrapy框架_Scrapy框架学习---Scrapy介绍(一)

    Scrapy 框架 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页 ...

  6. python代码案例详解-新手必学Python爬虫之Scrapy框架案例详解

    Scrapy简介 Scrapy是用纯Python实现一个为了爬取网站数据.提取结构性数据而编写的应用框架,用途非常广泛. 框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内 ...

  7. python中scrapy框架_python的scrapy框架

    scrapy是python中数据抓取的框架.简单的逻辑如下所示 scrapy的结构如图所示,包括scrapy engine.scheduler.downloader.spider.item pipel ...

  8. python爬虫实战:利用scrapy,短短50行代码下载整站短视频

    近日,有朋友向我求助一件小事儿,他在一个短视频app上看到一个好玩儿的段子,想下载下来,可死活找不到下载的方法.这忙我得帮,少不得就抓包分析了一下这个app,找到了视频的下载链接,帮他解决了这个小问题 ...

  9. Scrapy Architecture overview--官方文档

    原文地址:https://doc.scrapy.org/en/latest/topics/architecture.html This document describes the architect ...

最新文章

  1. [asp常用代码]文件上传代码
  2. matlab中 ne k,KFoldCV.m 查找径向基神经网络模型的网络参数的程序MATLAB函数'ne 联合开发网 - pudn.com...
  3. 【收集】前端技能知识图谱
  4. 微服务实战——Spring Cloud 第四篇 将服务注册到Eureka Server上
  5. 《深入理解 Spring Cloud 与微服务构建》第五章 Kubernetes
  6. IIS 添加支持json格式文件
  7. 编程语言新宠儿——Julia诞生记(转)
  8. 波士顿房价数据集——回归分析
  9. 22 个最常用的Python包
  10. 英语写作神器Quillbot---如何使用免费的Premium功能
  11. mysql跳跃扫描_MySQL 8.0 之索引跳跃扫描(Index Skip Scan)
  12. 听说你在做斗鱼APP?
  13. 华三路由器配置mstp多生成树协议
  14. win10企业版无法访问共享文件夹
  15. 用计算机制作多媒体作品使用的素材都必须,多媒体技术(选择题).doc
  16. HTML基础常见面试题
  17. 由kobject_create_and_add全面了解kobject
  18. 简单python网络爬虫批量下载视频
  19. virtualenv virtualenvwrapper
  20. ##MyfifthLog

热门文章

  1. python 提示按任意键退出_详解Python实现按任意键继续/退出的功能
  2. dmitry 的主机IP及域名资产扫描使用
  3. Leetcode:字符串问题ii
  4. Android SDK在线更新方法
  5. 网站识别selenium爬虫的原理以及解决方法
  6. asp.net JObject 操作
  7. Linux修改防火墙
  8. 图数据库(二):Java操作图数据库
  9. 静态站点生成器速度测试(Nikola,Pelican,Hexo,Octopress)
  10. 爬虫之代理池学习(二)