爬虫学习笔记14-scrapy中间件的使用

本文详细介绍了Scrapy中间件的使用,包括中间件的作用、使用方法,以及如何实现随机User-Agent的下载中间件。在创建项目后,通过设置随机User-Agent来避免被目标网站识别,同时讨论了代理IP的使用和配置,以应对网络限制。最后,提及了使用selenium处理动态加载页面的问题。
摘要由CSDN通过智能技术生成

1、中间件的作用:预处理request和response对象

① 对header以及cookie进行更换和处理
②使用代理ip等
③对请求进行定制化操作

注:在scrapy默认的情况下
两种中间件都在middlewares.py一个文件;爬虫中间件使用方法和下载中间件相同,且功能重复,通常使用下载中间件

2、中间件的使用方法

(1)在middlewares.py文件中定义中间件类
(2)在中间件中重写处理请求或者响应的方法
在这里插入图片描述

1)process_request(self, request, spider):当每个request通过下载中间件时,该方法被调用;
①返回None:没有return也是返回None,该request对象传递给下载器,或通过引擎传递给其他权重低的process_request方法
②返回Response对象:不再请求,把response返回给引擎
③返回Request对象:把request对象通过引擎交给调度器,此时将不通过其他权重低的process_request方法
2)process_response(self, request, response, spider):当下载器完成http请求,传递响应给引擎的时候调用
①返回Resposne:通过引擎交给爬虫处理或交给权重更低的其他下载中间件的process_response方法
②返回Request对象:通过引擎交给调取器继续请求,此时将不通过其他权重低的process_request方法
(3)在settings.py中配置开启中间件,权重值越小越优先执行

3、定义实现随机User-Agent的下载中间件

通过爬取豆瓣作为案例分析

  • 创建一个项目:scrapy startproject Douban
  • 数据建模:items
class DoubanItem(scrapy.Item):
    # define the fields for your item here like:
    name = scrapy.Field() # 电影名字
    info = scrapy.Field() # 主演
    score = scrapy.Field() # 评分
    desc = scrapy.Field() # 评价
  • 设置settings
USER_AGENT = 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
# ROBOTSTXT_OBEY = True
  • 创建一个爬虫:scrapy genspider movie douban.com
import scrapy
from Douban.items import DoubanItem

class MovieSpider(scrapy.Spider):
    name 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值