requests高級操作
目錄
1.cookie的處理
2.代理操作
3.驗證碼識別
4.模擬登陸
一、cookie
- cookie是存儲在客戶端的一組鍵值對
- cookie是由服務器端創建
- cookie應用的簡單實例:
- 免密登陸(指定時長之內)
在爬蟲中處理cookie的兩種方式
- 手動處理
- 將cookie封裝到headers字典中,將該字典作用到get/post方法中的headers參數中
- 自動處理
- Session對象
- Session對象的創建:requests.Session()
- 對象的作用:
- 可以跟requests一樣調用get/post進行請求的發送。在使用session進行請求發送的過程中,如果產生cookie,則cookie會被自動存儲到session對象中
- 在爬蟲中使用session處理cookie時,session對象至少需要被用幾次?
- 兩次,第一次是爲了捕獲和存儲cookie到session對象中,第二次就是用攜帶cookie的session進行請求發送,這次請求發送就是攜帶cookie發起的請求
二、代理操作
- 概念:代理服務器
- 代理服務器的作用
- fiddler就是一個典型的代理服務器的抓包工具
- 代理服務器就是用來轉發請求和響應。可以讓代理服務器轉發請求從而更換請求的原始IP地址
- 代理與爬蟲之間的關聯?
- 爬蟲程序可能會在短時間內對指定的服務器發起高頻的請求。服務器端會將該高頻請求的ip禁掉
- 代理的匿名度
- 透明:對方服務器知道你使用了代理也知道你的真實ip
- 匿名:對方知道你使用了代理,但是不知道你的真實ip
- 高匿名:對方不知道你使用代理,更不知道你的真實ip
- 代理的類型:
- http:只能代理http協議的請求
- https:代理https協議的請求
- 如何獲取代理服務器?
- 免費:幾乎不能用
- 西刺代理
- 快代理
- goubanjia
- 付費:
- 智聯HTTP:'http:zhiliandaili.cn'
三、驗證碼識別
- 顯示的打碼平臺進行驗證碼識別
- 雲代碼
- 超級鷹:http://www.chaojiying.com/
- 打碼兔
- 超級鷹使用:
- 註冊
- 登錄
- 創建一個軟件:軟件id -> 生成一個軟件id
- 下載實例代碼:開發文檔 -> Python
四、模擬登錄
- 涉及的反爬:
- 驗證碼
- 動態變化的請求參數
- cookie
- 以及常見的反爬:
- UA
- robots協議
- 動態加載的數據
- 圖片懶加載
- 代理
- js加密
- js混淆
問題:往往在進行大量請求發送大量請求的時候,經常會發生這樣一個錯誤:HTTPConnectionPool(Host:XX) Max....
- 原因:
- 1.每次數據傳輸前,客戶端要和服務器建立TCP連接。爲節省傳輸消耗,默認爲keep-alive。即連接一次傳輸多次。而如果連接遲遲不斷開的話,則連接池滿後則無法產生新的鏈接對象,導致請求無法發送。
- 2.Ip被封。
- 3.請求頻率太頻繁。
- 解決:如果下列解決未生效,則可以嘗試再次執行程序。
- 1.設置請求頭中的Connection的值爲close。表示每次請求成功後斷開鏈接。 headers={'Connection': 'close'}
- 2.更換請求ip。
- 3.每次請求之間使用sleep進行等待間隔。