scrapy爬虫案例_Scrapy爬虫框架入门(下) Middlewares

本文深入介绍了Scrapy的下载器中间件(DownloaderMiddleware)和爬虫中间件(Spider Middleware)。下载器中间件用于自定义请求响应处理,如设置User-Agent、HTTP代理、重定向和失败重试等。案例演示了如何自定义User-Agent和设置代理。爬虫中间件则在处理spider输入输出时发挥作用,可用于异常检测和日志记录。完整源码可后台获取。
摘要由CSDN通过智能技术生成
本篇文章将还是延续Scrapy爬虫入门篇,案例讲解还是用的之前编写好的测试数据代码。可以翻阅之前文章,也可以后台回复"慕课网爬虫"取测试代码。

言归正传,本次讲解Scrapy两大中间件(download中间件、spider中间件)。大致意思是对请求爬虫前后动作、得到爬虫数据前后进行特殊化处理。

3c347c16394e99929d01065dba6e4e86.png


1、下载器中间件(Downloader Middleware)

下载器中间件是介于Scrapy的request/response处理的钩子框架。是用于全局修改Scrapy request和response的一个轻量、底层的系统。

先来看看它能做什么:

  • 先来看看他们能做什么:

  • 自定义user-agent

  • 设置HTTP代理

  • 处理重定向

  • 设置cookies

  • 失败重试

  • ...

讲案例前先讲解几个下载器的组件方法:

process_request(request, spider)方法会在请求资源之前执行。process_response(request, response, spider)方法会在资源请求完成后执行process_exception(request, exception, spider)当下载处理器或者process_request()抛出异常会调用方法
案例1:自定义User-Agent

网上收集了多个不同引擎的浏览器版本号.

db34bd61a9206335d69d2c328b0f6d99.png

middlewares.py

激活中间件:

DOWNLOADER_MIDDLEWARES = {  'imooc_spider.middlewares.my_useragent': 300,}

setting.py

结果:

# 爬虫类打印headersprint(response.request.headers)# 结果"{b'User-Agent': [b'Mozilla/5.0 (iPad; U; CPU OS 4_3_3 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8J2 Safari/6533.18.5'], b'Accept': [b'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'], b'Accept-Language': [b'en'], b'Accept-Encoding': [b'gzip, deflate']}"
案例2:设置代理

准备一个可以测试检测访问IP的网站(https://tool.lu/ip/)

3f531560ab22cf082e99f99a9d4230b9.png

https://tool.lu/ip/

编写测试代理的爬虫(spider).

ae8a449ee52e8ac0a7088fc6de2df392.png

test_proxy.py

编写代理中间件代码:

e7adaf9bce610fc0f632d1aba848f942.png

middlewares.py

激活中间件:

DOWNLOADER_MIDDLEWARES = {   'imooc_spider.middlewares.makeUserAgent': 301,   'imooc_spider.middlewares.makeProxy': 300,}

setting.py

结果:

aefc30155c629caaf9cdf6273a4f4c3b.png

2、爬虫中间件(Spider Middleware)

组件方法:

process_spider_input(response, spider)当response通过spider中间件时,该方法被调用process_start_requests(start_requests, spider)当运行到start_requests()的时候,方法被调用process_spider_out(response, result, spider)当运行到yield scrapy.Request()或者yield item的时候,方法被调用process_spider_exception(response, exception, spider)当爬虫本身的代码出现了Exception的时候,方法被调用。

调试:

ed81fa63cf609864ca2d583d68389bc8.png

middlewares.py

SPIDER_MIDDLEWARES = {   'imooc_spider.middlewares.imoocSpiderMiddleware': 300,}

setting.py

结果在分析页面结构前被打印出来,这时候可以做一些异常检测、日志记录等功能。

58b1d70a1e723a0af1e597f940a8d035.png

结语:

Scrapy框架入门讲解已完结。欢迎到本讲解教程上的github一起交流学习。

源码后台回复关键字「慕课网爬虫

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值