scrapy之 Spider Middleware(爬虫中间件)

Spider Middleware是介入到Scrapy与Spider处理机制的钩子框架。所处位置:

当 Downloder生成Response之后,Response 会被发送给 Spider,在发送给 Spider之前,Response 会首先经过 Spider Middleware处理,当Spider处理生成Item 和Request之后,Item和Request还会经过 Spider Middleware 的处理。

Spider Midleware 有如下三个作用:

  • 我们可以在 Downmloader生成的Response发送给 Spider之前,也就是在 Response发送给Spide|之前对 Response进行处理。
  • 我们可以在 Spider生成的Request发送给 Scheduler之前,也就是在 Request发送给 Schedule之前对Request 进行处理。
  • 我们可以在 Spider生成的Item发送给 Item Pipeline之前,也就是在 Item发送给Item Pipeline之前对Item 进行处理

需要说明的是,Scrapy其实已经提供了许多 Spider Middleware,它们被 SPIDER_MIDDLEMARES_BASE 这个变量所定义。

SPIDER_MIDDLEMARES_BASE

{
   ‘scrapy.spidermiddlewares.httperror.HttpErrorMiddleware‘:50,
   ‘scrapy.spidermiddlewares.offsite.0ffsiteNiddleware‘:500,                                  ‘scrapy.spidermiddlewares.referer.RefererNiddleware‘:700,
   ‘scrapy. spidermiddlewares.urllength.UrlLengthMiddleware‘:800,              ‘scrapy.spidermiddlewares.depth. epthMiddleware‘:900,
}

和 Downloader Middleware—样,Spider Middleware 首先加人到 SPIDER_MIDDLEWARES 设置中,该设 置会和 Scrapy 中SPIDER_MIDDLEMARES_BASE定义的 Spider Middleware合并。然后根据键值的数字优先级排序,得到一个有序列表。第一个Middleware是最靠近引擎的,最后一个Middleware是最靠近Spider

待完善。。。

原文地址:https://www.cnblogs.com/codexlx/p/12618436.html

时间: 2024-10-12 04:29:46

scrapy之 Spider Middleware(爬虫中间件)的相关文章

小白学 Python 爬虫(37):爬虫框架 Scrapy 入门基础(五) Spider Middleware

人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Linux基础入门 小白学 Python 爬虫(4):前置准备(三)Docker基础入门 小白学 Python 爬虫(5):前置准备(四)数据库基础 小白学 Python 爬虫(6):前置准备(五)爬虫框架的安装 小白学 Python 爬虫(7):HTTP 基础 小白学 Python 爬虫(8):网页基

爬虫(十六):Scrapy框架(三) Spider Middleware、Item Pipeline、对接Selenium

1. Spider Middleware Spider Middleware是介入到Scrapy的Spider处理机制的钩子框架. 当Downloader生成Response之后,Response会被发送给Spider,在发送给Spider之前,Response会首先经过Spider Middleware处理,当Spider处理生成Item和Request之后,Item Request还会经过Spider Middleware的处理. Spider Middleware有三个作用: 我们可以在D

scrapy学习2 爬虫中间件,下载器中间件之添加代理

中间件 注意:这些中间件都放在middleware中 下载中间件 作用 实例: 代理被封,添加代理 方式一:内置添加代理功能 import os # -*- coding: utf-8 -*- import os import scrapy from scrapy.http import Request class ChoutiSpider(scrapy.Spider): name = 'chouti' allowed_domains = ['chouti.com'] start_urls =

爬虫07 /scrapy图片爬取、中间件、selenium在scrapy中的应用、CrawlSpider、分布式、增量式

目录 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 1. scrapy图片的爬取/基于管道类实现 2. 中间件的使用 3. selenium在scrapy中的应用 4. CrawlSpider 5. 分布式 5. 增量式 爬虫07 /scrapy图片爬取.中间件.selenium在scrapy中的应用.CrawlSpider.分布式.增量式 1. scrapy图片的爬取/基于管道类实现 爬取流程: 爬虫类中将解析到的图片

Scrapy系列教程(3)------Spider(爬虫核心,定义链接关系和网页信息抽取)

Spiders Spider类定义了怎样爬取某个(或某些)站点.包含了爬取的动作(比如:是否跟进链接)以及怎样从网页的内容中提取结构化数据(爬取item). 换句话说.Spider就是您定义爬取的动作及分析某个网页(或者是有些网页)的地方. 对spider来说.爬取的循环类似下文: 以初始的URL初始化Request,并设置回调函数. 当该request完成下载并返回时,将生成response,并作为參数传给该回调函数. spider中初始的request是通过调用 start_requests

scrapy抓取拉勾网职位信息(一)——scrapy初识及lagou爬虫项目建立

本次以scrapy抓取拉勾网职位信息作为scrapy学习的一个实战演练 python版本:3.7.1 框架:scrapy(pip直接安装可能会报错,如果是vc++环境不满足,建议直接安装一个visual studio一劳永逸,如果报错缺少前置依赖,就先安装依赖) 本篇主要对scrapy生成爬虫项目做一个基本的介绍 tips:在任意目录打开cmd的方式可以使用下面这两种方式 shift + 右键打开cmd(window10的powershell你可以简单理解为cmd升级版) 在路径框直接输入cmd

如何使用Scrapy框架实现网络爬虫

现在用下面这个案例来演示如果爬取安居客上面深圳的租房信息,我们采取这样策略,首先爬取所有租房信息的链接地址,然后再根据爬取的地址获取我们所需要的页面信息.访问次数多了,会被重定向到输入验证码页面,这个问题后面再解决 1. 创建项目: 进入项目路径,使用命令 scrapy startproject anjuke_urls 进入项目路径,使用命令 scrapy startproject anjuke_zufang 2. 创建爬虫文件: 进入项目anjuke_urls的spider路径,使用命令 sc

让Scrapy的Spider更通用

1,引言 <Scrapy的架构初探>一文所讲的Spider是整个架构中最定制化的一个部件,Spider负责把网页内容提取出来,而不同数据采集目标的内容结构不一样,几乎需要为每一类网页都做定制.我们有个设想:是否能做一个比较通用的Spider,把定制部分再进一步隔离出去? GooSeeker有一个爬虫群模式,从技术实现层面来考察的话,其实就是把爬虫软件做成一个被动接受任务的执行单元,给他什么任务他就做什么任务,也就是说同一个执行单元可以爬多种不同的网站.而分配任务的是GooSeeker会员中心的

Python下用Scrapy和MongoDB构建爬虫系统(1)

本文由 伯乐在线 - 木羊 翻译,xianhu 校稿.未经许可,禁止转载!英文出处:realpython.com.欢迎加入翻译小组. 这篇文章将根据真实的兼职需求编写一个爬虫,用户想要一个Python程序从Stack Overflow抓取数据,获取新的问题(问题标题和URL).抓取的数据应当存入MongoDB.值得注意的是,Stack Overflow已经提供了可用于读取同样数据的API.但是用户想要一个爬虫,那就给他一个爬虫. 像往常一样,在开始任何抓取工作前,一定要先查看该网站的使用/服务条