• 关于requests的session方法保持不了cookie的问题。(seesion的意思是保持一个会话,比如 登陆后继续操作(记录身份信息) 而requests是单次请求的请求,身份信息不会被记录)


    其实只要用cookies属性的update方法更新cookie就行了。
    比如:

    cookie_dict = {"a":1}
    s = requests.Session()
    s.cookies.update(cookie_dict)
    s.get(url)

    -----------------分割线----------------------下面的东东是以前的----------------上面是原文作者发现的新的方法---我看了下官网实际也有-----所以啊 没事多看官网----https://requests.kennethreitz.org//zh_CN/latest/user/advanced.html#advanced------------------

    最近在做爬虫的时候遇到了一个问题,在用requests的session方法保持cookie的时候发现requests不能保持手动构建的cookie。起初以为requests只能自动保持由服务器返回的set-cookie语句中的cookie。后来查了很多资料,才终于明白。原来requests只能保持 cookiejar 类型的cookie,而我们手动构建的cookie是dict类型的。所以要把dict转为 cookiejar类型,于是我又在网上查,在几乎打算放弃的时候终于找到了一个把dict转为cookiejar的方法,如下:

    #将CookieJar转为字典:
    cookies = requests.utils.dict_from_cookiejar(r.cookies)
    
    #将字典转为CookieJar:
    cookies = requests.utils.cookiejar_from_dict(cookie_dict, cookiejar=None, overwrite=True)
    
    #其中cookie_dict是要转换字典
    
    转换完之后就可以把它赋给cookies 并传入到session中了:
    
    s = requests.Session()
    s.cookies = cookies
    (实验证明,使用这个方法是替换原来的cookies 并不是追加,下面有追加的方法)-----------------------------------------------------------------------------------------------------替换cookie

    以上代码是我在下面这个网站上查到的,感谢这个博客的作者!这篇文章上还介绍了一些官方文档中没有提到的方法。

    —————————-以下是原文——————————— 
    原文地址:http://www.lihuai.net/program/python/1617.html

    原文地址:  http://blog.csdn.net/falseen/article/details/46962011

    自己尝试:

    也可以把headers这个请求头直接转成cookiejar类型放入cookies里面,尝试了成功执行

    cookies = requests.utils.cookiejar_from_dict(headers, cookiejar=None, overwrite=True)

    追加cookie的方法:

  • 相关阅读:
    C# winIO32位,64位的使用(运行时要用管理员身份)
    C#实现的三种方式实现模拟键盘按键
    C#打印日志的小技巧
    write wall ping ifconfig mail last traceroute netstat setup mount
    安装常用工具 zip unzip bzip2 gcc gcc++编译器 cmake编译器
    gzip/gunzip tar -zcf/-zxvf zip /unzip bzip2/bunzip2 tar -cjf/tar -xjf
    help
    Asp.Net 高性能框架 SqlSugar.ORM 2.3
    centos 查看版本(转)
    浅谈OCR之Tesseract
  • 原文地址:https://www.cnblogs.com/kaibindirver/p/7767605.html
Copyright © 2020-2023  润新知