使用python的requests開發爬蟲類程式時,經常需要將之前請求返回的set-cookie值,作為下一個請求的cookie發送。比如模擬登錄之後的返回的sessionId,就需要作為後續請求的cookie參數。 網上找了一圈,發現很多說需要手動添加或設置cookie的值。殊不知cookie是與 ...
使用python的requests開發爬蟲類程式時,經常需要將之前請求返回的set-cookie值,作為下一個請求的cookie發送。比如模擬登錄之後的返回的sessionId,就需要作為後續請求的cookie參數。
網上找了一圈,發現很多說需要手動添加或設置cookie的值。殊不知cookie是與功能變數名稱、路徑先關的,而且具有有效期。手動操作很容易掉坑裡。。。
之前做C#時就有一個CookieContainer類可以自動處理cookie,照理requests的RequestsCookieJar應該也有類似的作用。研究了下發現其實requests組件確實具有自動處理cookie的能力,而且一句update代碼就能搞定:
def __init__(self): self.cookies = requests.cookies.RequestsCookieJar() def go(self, url, method, post_data): response = requests.request(method, url , data=post_data , headers=info.headers , cookies=self.cookies) #傳遞cookie self.cookies.update(response.cookies) # 保存cookie