查看原文
其他

一日一技:在Scrapy中,Cookies不能放在Headers里面

kingname 未闻Code 2022-09-11

当我们使用requests的时候,一般可以直接把Cookies放在Headers里面,随着请求一并提交,例如:

  1. {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',

  2. 'Accept-Encoding': 'gzip, deflate',

  3. 'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',

  4. 'Cache-Control': 'max-age=0',

  5. 'Connection': 'keep-alive',

  6. 'Cookie': '__cfduid=d50cf692a2f654986d51b98e6c1bad6c41535939301; session=.eJwlzj0OwjAMQOG7eO6Q2Emc9DKV6x-oEB1amBB3pxLS27_3gSUOP-8wv463T7BsBjMEiaIRMZe-MgfXKozmShqWXZVMOqdW-jDElkbm2r2IKqt0WYkwczKLNjyKmqUW2Nekgv3KMg2mWp1TRcm54ShNROvl5FARmOB9-vGfeWz7bZenw_cHGzsyUA.Dw5FeA.xD0ofpGXJUvDLYeCrMn08E24HKM',

  7. 'DNT': '1',

  8. 'Host': 'exercise.kingname.info',

  9. 'Upgrade-Insecure-Requests': '1',

  10. 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}

但是,如果使用Scrapy的时候需要Cookies,就不能把Cookies放在Headers里面。在Scrapy发起请求的时候,有一个单独的参数来设置Cookies:

  1. yield scrapy.Request(url,

  2.                     callback=self.xxx,

  3.                     headers=headers,

  4.                     cookies={'__cfduid': 'd50cf692a2f654986d51b98e6c1bad6c41535939301',

  5.                              'session': '.eJwlzj0OwjAMQOG7eO6Q2Emc9DKV6x-oEB1amBB3pxLS27_3gSUOP-8wv463T7BsBjMEiaIRMZe-MgfXKozmShqWXZVMOqdW-jDElkbm2r2IKqt0WYkwczKLNjyKmqUW2Nekgv3KMg2mWp1TRcm54ShNROvl5FARmOB9-vGfeWz7bZenw_cHGzsyUA.Dw5FeA.xD0ofpGXJUvDLYeCrMn08E24HKM'})

并且, cookies参数的值为一个字典,需要把原来Chrome中的字符串Cookies,先按分号分为不同的段,每一段再根据等号拆分为key和value。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存