『scrapy爬虫』08. 中间件的使用之引入cookie(详细注释步骤)


欢迎关注 『scrapy爬虫』 专栏,持续更新中
欢迎关注 『scrapy爬虫』 专栏,持续更新中

本文以豆瓣为例子,抓取cookie的方式默认大家已经知道,简单来说登录豆瓣后f12抓包搜索cookie即可,实在不会可以看此文requests实战-comicai绘画ai通过cookie签到中介绍的方法.

中间件介绍

在Scrapy中有两个中间件SpiderMiddleware和DownloaderMiddleware

  • SpiderMiddleware:

SpiderMiddleware是用于处理从Spider发出的请求和接收的响应的中间件。它负责在请求发送到引擎之前和响应从引擎返回给Spider之后进行预处理和后处理操作。
SpiderMiddleware可以用于修改请求的headers、URL、数据等内容,并且可以在接收到响应后对响应进行处理,例如解析数据、修改响应内容等。

  • DownloaderMiddleware:

DownloaderMiddleware是用于处理引擎发往下载器的请求以及下载器返回的响应的中间件。它负责在请求发送到下载器之前和下载器返回响应到引擎之后进行预处理和后处理操作。
DownloaderMiddleware可以用于修改请求的headers、添加代理、设置User-Agent,cookie等操作,并且可以在下载器返回响应后对响应进行处理,例如检查状态码、解密内容等。
SpiderMiddleware主要负责处理Spider发出的请求和接收的响应,而DownloaderMiddleware主要负责处理引擎发往下载器的请求以及下载器返回的响应。它们分别在不同阶段对请求和响应进行处理,为爬虫提供了灵活的自定义操作和处理能力。


1. 在中间件中设置使用cookie

middlewares.py中

  • 拿到我们的cookie
def get_cookies_dict():
    # cookie字符串转为字典并返回
    cookies_str='XXXXXXXXX'#你的豆瓣cookie
    cookies_dict={}
    for item in cookies_str.split('; '):# 用 "; "作为分隔符,分割字符串得到列表,比如说列表第一项 ll="118174
        key,vlaue=item.split('=',maxsplit=1)# 用 "="作为分隔符,分割"ll="118174",得到的key和value分别是 li 和 118174
        cookies_dict[key]=vlaue
    return cookies_dict

COOKIES_DICT=get_cookies_dict #全局变量cookie字典
  • 请求前使用cookie,注意是MyscrapyDownloaderMiddleware里的process_request
# 在进行下载请求之前的拦截
class MyscrapyDownloaderMiddleware:
    # Not all methods need to be defined. If a method is not defined,
    # scrapy acts as if the downloader middleware does not modify the
    # passed objects.

    @classmethod
    def from_crawler(cls, crawler):
        # This method is used by Scrapy to create your spiders.
        s = cls()
        crawler.signals.connect(s.spider_opened, signal=signals.spider_opened)
        return s
    
    # 下载请求前的操作
    def process_request(self, request, spider):
        # request.meta={'proxy':"socket5://127.0.0.1:1086"}#在中间件中请求前拦截请求 添加代理
        request.cookie=COOKIES_DICT #设置cookie
        return None

2.启用中间件

settings.py中新增
这里的543权重,数字越小越先执行.

# 配置下载中间件
DOWNLOADER_MIDDLEWARES = {
   "myscrapy.middlewares.MyscrapyDownloaderMiddleware": 543,
}

总结

大家喜欢的话,给个👍,点个关注!给大家分享更多计算机专业学生的求学之路!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2024 mzh

Crated:2024-3-1

欢迎关注 『scrapy爬虫』 专栏,持续更新中
欢迎关注 『scrapy爬虫』 专栏,持续更新中
『未完待续』


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值