python requests 的cookie 操作
結論:
1.requests模塊的請求和響應分別有cookie對象。 可以通過此對象設置和獲取cookie。
2.通過在requests.get,requests.post等方法請求中傳入cookies字典參數 只用於單次請求的cookie設置。
3. request.session() 返回保持會話的對象。Provides cookie persistence, connection-pooling, and configuration。
1. 請求的cookie設置和獲取
方式一: 參數傳入方式 在請求的時候加入 cookies 參數, 這種方式設置的cookie只是單個請求添加。
import requests as requestsModule
cookiesDit = {
‘PHPSESSID‘:‘d38k25b2nt90ahhaanuuqghrh6‘
}
requests = requestsModule.session()
print(requests.cookies.get_dict()) #先打印一下,此時一般應該是空的。
postData ={
}
# 設置了 cookies
rs=requests.post(‘http://www.baidu.com‘,data = postData,headers=headers,cookies=cookiesDit,verify=False)
rs.encoding=‘utf-8‘
print(requests.cookies.get_dict() ) # 緩存的cookie
print(rs.cookies.get_dict() ) # 獲取響應設置的cookie
方式二: 設置requests的cookie成員對象
import requests as requestsModule
cookiesDit = {
‘PHPSESSID‘:‘d38k25b2nt90ahhaanuuqghrh6‘
}
requests = requestsModule.session()
requestsModule.utils.add_dict_to_cookiejar(requests.cookies, cookiesDit) # 這只請求的cookie對象的值 會一直使用
print(requests.cookies.get_dict()) #先打印一下,設置的cookie能看到。
postData ={
}
# 設置了 cookies
rs=requests.post(‘http://www.baidu.com‘,data = postData,headers=headers,verify=False)
rs.encoding=‘utf-8‘
print(requests.cookies.get_dict() )
print(rs.cookies.get_dict() )
# 使用對象方式設置 和requestsModule.utils.add_dict_to_cookiejar 設置效果一樣
c=requests.cookies.RequestsCookieJar()#利用RequestsCookieJar獲取
c.set(‘cookie-name‘,‘cookie-value‘)
s.cookies.update(c)
詳細使用可參考官方手冊
http://cn.python-requests.org/zh_CN/latest/api.html#requests.PreparedRequest.prepare
python requests 的cookie 操作