如何在scrapy中修改cookies

问题描述

爬取https://auto.ru/cars/all/?sor...,打开页面之后需要点击一个按钮,在点击按钮的时候,网站会设置cookies.但是在cookies中有一个字段不是通过set-cookies设置的,字段为'gdpr':'1'
完整字段为:

_csrf_token=020335a5dcb38cc95823931e5590aa1d6f8e0c8e5d1efbee; suid=77c527af480928e8842121176d182182.9bbd97c75bea15045fc7de2399bfbbea; 
from=direct; autoru_sid=a%3Ag5c0a49f62a75ujsbkcumbspu4hpvpn0.f004ec1118196bd8749cc43268eafa85%7C1544178166087.604800.kZCWC5djG3zKbPIpqNyfVA.EuliNzEnolonmG71Ik1guRXEQZeqqojzIJQwZf1ZJ60; autoruuid=g5c0a49f62a75ujsbkcumbspu4hpvpn0.f004ec1118196bd8749cc43268eafa85; 
gdpr=1;
from_lifetime=1544178179814;
X-Vertis-DC=sas


在requests请求中好解决

url = 'https://auto.ru/cars/all/?sort=fresh_relevance_1-desc&output_type=list&page=1'

header = {
    "Connection":"keep-alive",
    "Upgrade-Insecure-Requests":"1",
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36",
    "Accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
    "Accept-Encoding":"gzip, deflate, br",
    "Accept-Language":"zh-CN,zh;q=0.9",
}
requests_session = requests.session()
requests_session.cookies = requests.utils.cookiejar_from_dict({'gdpr':'1'})

但是使用scrapy如何解决这个问题呢?

scrapy中可以设置开启cookies

'COOKIES_ENABLED':True,
'COOKIES_DEBUG':True,

也可以在请求中传递cookies

yield scrapy.Request(url=task['task_url'],callback=self.handle_car_item_response,meta={'cookiejar':i})

这个请求传递到middware的CookiesMiddleware中,我该如何操作,才能把'gdpr':'1'这个字段附加到原cookies中呢?

阅读 5.4k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题