文章转载于 安卓逆向菜鸟修炼记(微信公众号),个人感觉很实用,记录下来方便回顾,想看原文的请移步公众号。

1.如果是在headers中使用(这里的cookie是字符串的形式)

def start_requests(self):headers = {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36","cookie":"你的cookie"}url = "https://weibo.com/u/{}".format("你的微博id")yield Request(url, callback=self.parse, headers=headers)

那么需要把settings.py的COOKIES_ENABLED设置为false

COOKIES_ENABLED = False

2.如果使用cookies=cookies的方式设置cookie(这里的cookie是字典的形式),个人比较习惯用第二种方式

def start_requests(self):headers = {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",}url = "https://weibo.com/u/{}".format("你的微博id")yield Request(url, callback=self.parse, headers=headers,cookie="你的cookie")

那么需要把settings.py的COOKIES_ENABLED设置为true

COOKIES_ENABLED = True

3.多个url使用cookiejar
此方法也受COOKIES_ENABLED=True的影响

代码示例

class CookieTestSpider(scrapy.Spider):name = 'usecookie'cookie_dict = {"SUB": "你的微博cookie"}headers = {"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36",}weibo_id = "你的微博主页id"def start_requests(self):url = "https://weibo.com/u/{}".format(self.weibo_id)yield Request(url, callback=self.parse, headers=self.headers, cookies=self.cookie_dict, meta={'cookiejar': 1})def parse(self, response):source = response.texturl = "https://weibo.com/u/{}".format(self.weibo_id)if u"我的主页" in source:print "找到了"yield scrapy.Request(url, headers=self.headers, meta={'cookiejar': response.meta['cookiejar']},callback=self.parse_page, dont_filter=True)else:print "没有cookie"def parse_page(self, response):source = response.textif u"我的主页" in source:print "又找到了"else:print "没有cookie"

首先在start_requests中,在meta里添加一个cookiejar属性,这个键必须这个名,然后是后面值可以从0开始,如果多个start_url可以使用列表的里url对应的下标作为cookiejar的值,
程序可以通过传入的不同值传递多个start_url的cookie。
后面需要使用cookie地方使用meta={‘cookiejar’: response.meta[‘cookiejar’]}即可。
这种方法的好处:

这种是通过meta的方式,将为spider维护多个独立的cookie会话。如果使用cookies ={},则必须手动维护单独的cookie会话。
下面这个图是cookiejar的调用栈

scrapy使用cookie的三种方式相关推荐

  1. .net session 有效时间_Python中requests模拟登录的三种方式(携带cookie/session进行请求网站)...

    这篇文章主要介绍了python中requests模拟登录的三种方式(携带cookie/session进行请求网站),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋 ...

  2. $.ajax 加了headers报错_Springboot解决Ajax跨域的三种方式

    这篇文章不华丽,但比较实用,能解决不少大家实际业务中的问题.大家可以收藏起来,以备用时之需! 1.同源策略 1.1 含义 ajax出现请求跨域错误问题,主要原因就是因为浏览器的"同源策略&q ...

  3. 够狠 | 单点登录三种方式,够狠!够劲爆!

    Hi! 我是小小,今天是本周的最后一篇,本篇将会着重讲解单点登录的三种方式. 前言 单点登录分为三种机制,这三种机制分别为http无状态协议,会话机制,登录机制等这三种机制. http无状态协议 we ...

  4. Spring Boot当中获取request的三种方式

    本篇博客主要记录request相关知识,也是开发当中经常遇到的,感兴趣的跟小编一起学习吧! 目录 一.请求过程 二.获取request的三种方式 2.1.可以封装为静态方法 2.2.controlle ...

  5. 自动化签到的三种方式

    现在很多网站都可以通过签到来获取积分,然后拿积分去兑换小礼品.每天手动签到难免有忘记的时候,下面就给大家介绍几种常见的自动化签到方案. 自动化签到的三种方式 Python/C#/Java等语言拿到页面 ...

  6. Springboot实现登录拦截的三种方式

    文章目录 1. 登录认证 1.1 介绍 1.2 方式 1.3 扩展 2. 实现 2.1 项目结构以及前置准备 2.2 过滤器实现登录拦截 2.3 拦截器实现登录拦截 2.4 AOP+自定义注解实现 2 ...

  7. 关于mysql存取图片的三种方式(含源码示例)

    最近在做小程序的后台,要求将小程序用户以upload方法上传的图片保存到mysql数据库中. 然后机缘巧合三种方式都试了,所以专门整理出来分享给大家.可能有的地方说的不太对,欢迎大家帮纠正. ==== ...

  8. Spring MVC 实战:三种方式获取登录用户信息

    前言 Web 项目中,维持用户登录状态的常用方式有三种,分别是 Cookie.Session.Token,不管哪种方案,都需要获取到用户信息供业务层使用. 由于获取用户信息与具体业务无关,因此在普通的 ...

  9. 远程控制virtual box虚拟机系统的三种方式

    远程控制virtual box虚拟机系统的三种方式[阅读时间:5分钟] 1.使用现有的远程控制软件 2.使用SSH连接 3.使用远程桌面控制虚拟机系统 对于把虚拟机安装在寝室笔记本的人来说,能够远程控 ...

最新文章

  1. java连接数据库核心代码
  2. loadrunner中创建唯一随机数
  3. Vue2.0配置mint-ui踩过的那些坑
  4. (转)HTTP 协议之压缩
  5. python 残差图_python 残差图
  6. linux 如何获得后缀_Bugku:杂项 linux
  7. 学会用taro封装一个组件
  8. Windows下配置Nginx+php7
  9. oracle中showTime用法,ant design vue中日期选择框混合时间选择器的用法
  10. Cmake构建_选择debug与release的库
  11. 简单几步把Spring Boot 项目部署到 K8S,步骤来了!
  12. 实用小技巧之电脑如何滚动截屏/截取长图
  13. OkHttp使用及工具类封装
  14. C语言:由键盘任意输入1个整形数据(小于10亿,位数不限),将其倒置,如:输入12345,则输出54321。
  15. 单片机模拟iic从设备-主要代码(2)
  16. LintCode 141. 对x开根 JavaScript算法
  17. uniapp地图轨迹回放
  18. Django項目部署到Ubuntu服務器
  19. 基于javaweb的校园外卖点餐系统(java+ssm+jsp+mysql)
  20. linux0.11内核完全剖析 - ll_rw_blk.c

热门文章

  1. 元组-元组和格式化字符串
  2. Shell文件的排序、合并和分割
  3. C# 类、对象、方法和属性详解(重新排版,页面整洁)
  4. (转) 对svn分支合并类型和深度的理解
  5. mysql之 binlog维护详细解析(开启、binlog相关参数作用、mysqlbinlog解读、binlog删除)...
  6. IBM公布Kitura 1.0和Bluemix Runtime for Swift 3
  7. linux环境下zookeeper部署
  8. iometer-2006_07_27.common-src编译
  9. 【蒲公英技术征文】如何在 ESP-12F/ESP8266 上实现 webserver
  10. Running Nutch in Eclipse