Scrapy中的Spider Middleware

2024-04-17 16:08
文章标签 scrapy spider middleware

本文主要是介绍Scrapy中的Spider Middleware,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

(一)Spider Middleware作用

  1. Downloader生成的Response发送给Spider之前
  2. Spider生成的Request发送给Scheduler之前
  3. Spider生成的Item发送给ItemPipeline之前

(二)核心方法

  • process_spider_input(response,spider)
  • process_spider_output(response,result,spider)
  • process_spider_exception(response,exception,spider)
  • process_start_requests(start_requets,spider)
    只需要实现其中一个或多个方法就可以定义一个Spider Middleware

1.process_spider_input

当Response被Spider Middleware调用处理时,process_spider_input被调用
process_spider_input 应该返回None或者抛出一个异常

  • 返回None时:
    Scrapy会继续处理Response,调用其他所有的Spider Middleware,直到spider处理该Response
  • 抛出异常时:
    Scrapy将不会调用任何其他Spider Middleware的process_spider_input方法,而调用Request的errback方法。errback的输出将会被重新输入到中间件中,使用process_spider_output方法来处理,当其抛出异常时则调用process_spider_exception来处理

2.process_spider_output

当Spider处理Response返回结果时,process_spider_output会被调用
process_spider_output方法必须返回包含Request或Item的可迭代对象

3.process_spider_exception

当Spider或Spider Middleware的process_spider_input方法抛出异常时process_spider_exception会被调用
方法必须返回None或者返回一个包含Request或者Item的可迭代对象

  • 返回None时:
    Scrapy继续处理该异常,调用其他Spider Middleware的process_spider_exception方法,直到所有Spider Middleware被调用
  • 返回可迭代对象时:
    调用其他Spider Middleware的process_spider_output方法

4.process_start_requests

process_start_requests方法以Spider启动的Request为参数被调用,执行的过程类似于process_spider_output,只不过他没有相关联的Response,并且必须返回一个包含Request的可迭代对象。

这篇关于Scrapy中的Spider Middleware的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/912256

相关文章

python scrapy爬虫框架 抓取BOSS直聘平台 数据可视化统计分析

使用python scrapy实现BOSS直聘数据抓取分析 前言   随着金秋九月的悄然而至,我们迎来了业界俗称的“金九银十”跳槽黄金季,周围的朋友圈中弥漫着探索新机遇的热烈氛围。然而,作为深耕技术领域的程序员群体,我们往往沉浸在代码的浩瀚宇宙中,享受着解决技术难题的乐趣,却也不经意间与职场外部的风云变幻保持了一定的距离,对行业动态或许仅有一鳞半爪的了解,甚至偶有盲区。   但正是这份对技术

scrapy 编写扩展 (八)

在scrapy使用过程中,很多情况下需要根据实际需求定制自己的扩展,小到实现自己的pipelines,大到用新的scheduler替换默认的scheduler。 扩展可以按照是否需要读取crawler大致分为两种,对于不需要读取的,比如pipelines的编写,只需要实现默认的方法porcess_item。需要读取的,如scheduler的编写又存在另外的方式。 1.第一种 这种处理起来比较

scrapy 设置爬取深度 (七)

通过在settings.py中设置DEPTH_LIMIT的值可以限制爬取深度,这个深度是与start_urls中定义url的相对值。也就是相对url的深度。例如定义url为:http://www.domz.com/game/,DEPTH_LIMIT=1那么限制爬取的只能是此url下一级的网页。深度大于设置值的将被ignore。       如图:

Scrapy ——如何防止被ban 屏蔽 之策略大集合(六)

话说在尝试设置download_delay小于1,并且无任何其他防止被ban的策略之后,我终于成功的被ban了。   关于scrapy的使用可参见之前文章:   http://blog.csdn.net/u012150179/article/details/34913315 http://blog.csdn.net/u012150179/article/details/34486677

scrapy自动多网页爬取CrawlSpider类(五)

一.目的。 自动多网页爬取,这里引出CrawlSpider类,使用更简单方式实现自动爬取。   二.热身。 1.CrawlSpider (1)概念与作用: 它是Spider的派生类,首先在说下Spider,它是所有爬虫的基类,对于它的设计原则是只爬取start_url列表中的网页,而从爬取的网页中获取link并继续爬取的工作CrawlSpider类更适合。 ࿰

Scrapy ——自动多网页爬取(抓取某人博客所有文章)(四)

首先创建project:   [python]  view plain  copy     转存失败重新上传取消<

Scrapy 核心架构 流程 (三)

一. 核心架构关于核心架构,在官方文档中阐述的非常清晰,地址:http://doc.scrapy.org/en/latest/topics/architecture.html。英文有障碍可查看中文翻译文档,笔者也参与了Scraoy部分文档的翻译,我的翻译GitHub地址:https://github.com/younghz/scrapy_doc_chs。源repo地址:https://github

windows install lxml for scrapy

在安装scrapy过程中可能遇到 ********************************************************************************* Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed? *************

windows 上安装 pip 和 scrapy

scrapy 有版本限制 python2.7 1 安装python [python下载](https://www.python.org/downloads/)下载之后点击安装即可设置环境变量 将python.exe路径加入到PATH即可 2 安装pip 方法一: [pip下载](https://bootstrap.pypa.io/get-pip.py)安装python

暗链威胁与检测方法之Screaming Frog SEO Spider

尖叫青蛙, 网站暗链检测方法网站暗链是指那些隐藏在网页上,对普通用户不可见或难以察觉的超链接。这些链接可能被故意设置为与背景颜色相同、使用极小的字体、或通过CSS技巧使其隐藏,从而在视觉上对用户隐藏。暗链通常用于不良的SEO实践,如操纵搜索引擎排名,或链接到恶意网站。这种做法可能导致网站在搜索引擎中被降级或罚款,损害网站的可信度和用户体验 为了解决网站暗链,一次性筛选所有暗链 买了一个软件 Scr