爬虫框架Scrapy(6)Spider Middleware 的用法
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了爬虫框架Scrapy(6)Spider Middleware 的用法,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2044字,纯文字阅读大概需要3分钟。
内容图文
![爬虫框架Scrapy(6)Spider Middleware 的用法](/upload/InfoBanner/zyjiaocheng/1030/a51e535456a649ee986b768b8b7bd402.jpg)
文章目录
五. Spider Middleware 的用法
Spider Middleware 是介入到 Scrapy 的 Spider 处理机制的钩子框架。当 Downloader 生成 Response 之后,Response 会被发送给 Spider,在发送给 Spider 之前,Response 会首先经过 Spider Middleware 处理,当 Spider 处理生成 Item 和 Request 之后,Item 和 Request 还会经过 Spider Middleware 的处理。Spider Middleware 有如下三个作用:
- 我们可以在 Downloader 生成的 Response 发送给 Spider 之前,也就是在 Response 发送给 Spider 之前对 Response 进行处理;
- 我们可以在 Spider 生成的 Request 发送给 Scheduler 之前,也就是在 Request 发送给 Scheduler 之前对 Request 进行处理;
- 我们可以在 Spider 生成的 Item 发送给 Item Pipeline 之前,也就是在 Item 发送给 Item Pipeline 之前对 Item 进行处理。
1. 使用说明
需要说明的是,Scrapy 其实已经提供了许多 Spider Middleware,它们被 SPIDER_MIDDLEWARES_BASE 这个变量所定义。 SPIDER_MIDDLEWARES_BASE 变量的内容如下:
{
'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
'scrapy.spidermiddlewares.referer.RefererMiddleware': 700,
'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware': 800,
'scrapy.spidermiddlewares.depth.DepthMiddleware': 900,
}
和 Downloader Middleware 一样,Spider Middleware 首先加入到 SPIDER_MIDDLEWARES
设置中,该设置会和 Scrapy 中 SPIDER_MIDDLEWARES_BASE
定义的 Spider Middleware 合并。然后根据键值的数字优先级排序,得到一个有序列表。第一个 Middleware 是最靠近引擎的,最后一个 Middleware 是最靠近 Spider 的。
2. 核心方法
Scrapy 内置的 Spider Middleware 为 Scrapy 提供了基础的功能。如果我们想要扩展其功能,只需要实现某几个方法即可。 每个 Spider Middleware 都定义了以下一个或多个方法的类,核心方法有如下 4 个:
- process_spider_input(response, spider)
- process_spider_output(response, result, spider)
- process_spider_exception(response, exception, spider)
- process_start_requests(start_requests, spider)
只需要实现其中一个方法就可以定义一个 Spider Middleware。这三种方法的详析用法可以参考 Python3网络爬虫开发实战教程]。
上述文章内容如有错误,欢迎各位读者在评论区留言!
内容总结
以上是互联网集市为您收集整理的爬虫框架Scrapy(6)Spider Middleware 的用法全部内容,希望文章能够帮你解决爬虫框架Scrapy(6)Spider Middleware 的用法所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。