Python 3.x Python requests.Session()是否未更新所有cookie?

Python 3.x Python requests.Session()是否未更新所有cookie?,python-3.x,cookies,python-requests,Python 3.x,Cookies,Python Requests,我正试图从网站上抓取数据,当我使用requests.session时,似乎在从网站获取/设置cookie时遇到问题 参见下面的代码 import pickle import re import requests def save_cookies(requests_cookiejar, filename): with open(filename, 'wb') as f: pickle.dump(requests_cookiejar, f) def load_cooki

我正试图从网站上抓取数据,当我使用requests.session时,似乎在从网站获取/设置cookie时遇到问题

参见下面的代码

import pickle
import re
import requests

def save_cookies(requests_cookiejar, filename):
    with open(filename, 'wb') as f:
        pickle.dump(requests_cookiejar, f)


def load_cookies(filename):
    with open(filename, 'rb') as f:
        return pickle.load(f)


s = requests.Session()
r = s.get("http://192.168.1.16/phpmyadmin/", cookies=load_cookies("Cookie.txt"))
r = s.get("http://192.168.1.16/phpmyadmin/")
save_cookies(r.cookies, "Cookie.txt")
看 对于2个GET请求,我不明白为什么cookies会像:pmaCookieVer,pma_lang。。etc正在“迷失”


PS:我将使用不同的网站来抓取数据,我的本地网站仅用于测试目的。

因为您正在使用
请求。分配给
s
的Session
实例用于管理您的请求,由
s.get
返回的单个
响应
实例将不包含cookies,但是
requests.Session
实例将。下面是一个演示:

导入请求 >>>s=请求。会话() >>>r1=s.get('http://httpbin.org/cookies/set/sessioncookie/123456789') >>>len(r1.cookies) 0 >>>莱恩(s.cookies) 1. >>>打印(s.cookies['sessioncookie']) 123456789 >>>r2=s.get('http://httpbin.org/cookies/set/anothercookie/123456789') >>>len(r2.cookies) 0 >>>莱恩(s.cookies) 2. 您可以看到cookie实际上是在会话的cookie jar中累积的,而不是在返回的请求对象上(例如,使用
s.cookie
作为保存参数,而不是
r.cookie
)。要结束此过程,请使用不同的会话对象模拟保存和加载Cookie:

>>保存cookies(s.cookies,'cookies.txt')
>>>新建会话=请求。会话()
>>>new_session.cookies=加载_cookies('cookies.txt')
>>>r3=新建会话。获取(“http://httpbin.org/cookies")
>>>r3.json()
{'Cookie':{'anothercookie':'123456789','sessioncookie':'123456789'}