方法一:start_requests方法中添加cookies与headers:

1、重写spider中的start_requests方法

浏览器中cookies是这样的

Cookie:_T_WM=98075578786; WEIBOCN_WM=3349; H5_wentry=H5; backURL=https%3A%2F%2Fm.weibo.cn%2Fdetail%2F4396824548695177; ALF=1568417075; SCF=Ap5VqXy_BfNHBEUteiYtYDRa04jqF4QPJBULzWo7c1c_noO0GpnJW3BqhIkH7JXJSwWhL0qSg69_Vici5P7NbmY.; SUB=_2A25wUOt6DeRhGeFM41AT9y3LyDSIHXVTuvUyrDV6PUJbktANLVXzkW1NQL_2tT4ZmobAs5b6HbIQwSRXHjjiRkzj; SUBP=0033WrSXqPxfM725Ws9jqgMF55529P9D9WFWyDsTszIBJPBJ6gn7ccSM5JpX5K-hUgL.FoME1hzES0eNe0n2dJLoI0YLxK-L1K.L1KMLxK-L1KzLBoeLxK-L12BLBK2LxK-LBK-LB.BLxK-LBK-LB.BLxKnLB-qLBoBLxKnLB-qLBoBt; SUHB=0S7CWHWuRz1aWf; SSOLoginState=1565825835

需要转换为字典格式

转换代码:

def transform(self,cookies):cookie_dict = {}cookies = cookies.replace(' ','')list = cookies.split(';')for i in list:keys = i.split('=')[0]values = i.split('=')[1]cookie_dict[keys] = valuesreturn cookie_dict

在start_request中新增

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like         Gecko) Chrome/75.0.3770.100 Safari/537.36'}
cookies = {'_T_WM': '98075578786', 'WEIBOCN_WM': '3349', 'H5_wentry': 'H5', 'backURL': 'https%3A%2F%2Fm.weibo.cn%2Fdetail%2F4396824548695177', 'ALF': '1568417075', 'SCF': 'Ap5VqXy_BfNHBEUteiYtYDRa04jqF4QPJBULzWo7c1c_noO0GpnJW3BqhIkH7JXJSwWhL0qSg69_Vici5P7NbmY.', 'SUB': '_2A25wUOt6DeRhGeFM41AT9y3LyDSIHXVTuvUyrDV6PUJbktANLVXzkW1NQL_2tT4ZmobAs5b6HbIQwSRXHjjiRkzj', 'SUBP': '0033WrSXqPxfM725Ws9jqgMF55529P9D9WFWyDsTszIBJPBJ6gn7ccSM5JpX5K-hUgL.FoME1hzES0eNe0n2dJLoI0YLxK-L1K.L1KMLxK-L1KzLBoeLxK-L12BLBK2LxK-LBK-LB.BLxK-LBK-LB.BLxKnLB-qLBoBLxKnLB-qLBoBt', 'SUHB': '0S7CWHWuRz1aWf', 'SSOLoginState': '1565825835'}

2、修改方法返回值

yield scrapy.Request(url=url, headers=headers, cookies=cookies, callback=self.parse)​​

样例:

3、修改COOKIES_ENABLED

  • 当COOKIES_ENABLED是注释的时候scrapy默认没有开启cookie
  • 当COOKIES_ENABLED没有注释设置为False的时候scrapy默认使用了settings里面的cookie
  • 当COOKIES_ENABLED设置为True的时候scrapy就会把settings的cookie关掉,使用自定义cookie

所以需要在settings.py文件中设置COOKIES_ENABLED = True​

并且在settings.py文件中设置ROBOTSTXT_OBEY = False​ #不遵守robotstxt协议

方法二:在setting.py文件中添加cookies与headers   --- 最简单的方法

  1. settings文件中给Cookies_enabled=False和DEFAULT_REQUEST_HEADERS解注释
  2. 在settings的DEFAULT_REQUEST_HEADERS配置的cookie就可以使用了

推荐使用这种方法,因为可以用shell进行调试

样例:

方法三:激活DownloadMiddleware(下载器中间件)

  1. settings.py中给DOWNLOADER_MIDDLEWARES解注释
  2. 去中间件文件中找DownloaderMiddleware这个类,修改process_request,添加request.cookies={}

参考链接:https://scrapy-chs.readthedocs.io/zh_CN/0.24/topics/downloader-middleware.html

Scrapy设置headers、cookies三种方法相关推荐

  1. Allegro自定义设置快捷键的三种方法

    Allegro自定义设置快捷键的三种方法: 1.在Allegro PCB editor 命令窗口直接定义 2.通过修改用户变量env文件来设置快捷键 3.定义笔画为快捷键 1.在Allegro PCB ...

  2. bluehost 虚拟主机 php.ini,BlueHost主机设置伪静态的三种方法

    伪静态是相对真实静态来讲的,真实静态会生成一个html或htm后缀的文件,访客能够访问到真实存在的静态页面:而伪静态则没有生成实体静态页面文件,而仅仅是以.html一类的静态页面形式.为了增加对搜索引 ...

  3. css设置行间距的三种方法

    css设置行间距的三种方法 1.使用数值来设置行间距 CSS <!DOCTYPE html> <html><head><meta charset=" ...

  4. Android 设置字体的三种方法(TypeFace)

    Android系统默认字体支持四种字体,分别为: noraml (普通字体,系统默认使用的字体) sans(非衬线字体) serif (衬线字体) monospace(等宽字体) 除此之外还可以使用其 ...

  5. 设置分区的三种方法coalesce、repartition、partitionBy

    coalesce[ˌkəʊəˈles]:改变 RDD 的分区数 /* * false:不产生 shuffle * true:产生 shuffle * 如果重分区的数量大于原来的分区数量,必须设置为 t ...

  6. vue修改http请求头_vue-resouce设置请求头的三种方法

    本文主要介绍了vue-resouce设置请求头的三种方法,分享给大家,具体如下: 第一种:在Vue实例中设置 var vm = new Vue({ el:'#rrapp', data:{ showLi ...

  7. 安卓导航车机root方法_安卓手机设置充电提示音教程来了!教你三种方法,无需 ROOT!...

    最近,iPhone 充电提示音火了!上期,我们分享了 iPhone 手机自定义设置充电提示音的方法,安卓用户表示也想要~苹果手机有的,安卓手机也必须有!今天,我们就为大家分享一下安卓手机设置充电提示音 ...

  8. C语言函数怎么像python那样返回多个值?(三种方法:1、设置全局变量 2、传递指针 3、使用结构体返回不同类型的数据)

    引用文章:c语言函数可不可以返回多个值 文章目录 方法一:设置全局变量 例如:利用一个函数求出正方形的周长和面积. 方法二:使用数组名或指针作为函数的形参 实例2:编写函数求一维整形数组的最大值与最小 ...

  9. 设置环境变量的三种方法【转载】

    文章目录 1 设置环境变量的三种方法 1.1 临时设置 1.2 当前用户的全局设置 1.3 所有用户的全局设置 2 测试当前环境变量 3 脚本解析 3.1 打开的文件如下: 3.2 脚本解析说明 3. ...

最新文章

  1. restapi如何传图片_iPhone传照片,不是只能用微信QQ,第二种方法很少人知道哦
  2. DNS的子域授权和转发机制,view设置
  3. 龙书啃不动?老司机带你从零入门编译原理,开发编译器
  4. linux 测试程序性能,推荐一款Linux系统的性能测试软件
  5. 我来重新学习js的面向对象(part 4)
  6. 后缀自动机线性构造方法
  7. Core Servlets and JSP Volume I 读后感 Servlet(三)
  8. AWVS11安装教程
  9. React项目以及降级兼容IE低版本
  10. Hadoop大数据开发基础课后答案
  11. AcWing 4071. 国际象棋
  12. GoLand Jetbrain工具使用
  13. nginx 二 配置conf
  14. 每一个计算机主机有且只能有一块硬盘,2014年《计算机基础》期中试卷.doc
  15. 完美实现笔记本在有线网卡连通时自动关闭wifi,有线网卡未连通时自动开启wifi
  16. buffer几种用法
  17. 人工智能数学基础-内积和外积
  18. matlab多重心法,多重心法例.ppt
  19. 用vue实现,鼠标悬停放大图片,根据鼠标位置倾斜图片网页源码
  20. DataX Transformer 源码分析及 UDF 扩展与使用

热门文章

  1. 护眼台灯真的护眼吗?为家长推荐四款真正护眼的台灯
  2. apache2.2 prefork模式优化
  3. 北京大学计算机硕博连读5年,关于2018年北京大学硕博连读研究生选拔工作的通知-更新...
  4. 《C游记》 第二章 - 初识分支句 循环助本心(贰)
  5. 英雄杀朱雀之章在线活动
  6. 如何将NOAA官网下载的气象雷达原始数据转化为NC文件
  7. 蓝桥杯 算法提高 快乐司机
  8. Vero VISI 2021.0.2109
  9. 桌面计算机和笔记本被称为,网络上常见的PC是什么意思?深度解读计算机发展史...
  10. 3D变电站园区3D可视化电力监控管理平台