# 爬蟲requests的高級操作

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'

 

三、驗證碼識別

  • 顯示的打碼平臺進行驗證碼識別
  • 超級鷹使用:
    • 註冊
    • 登錄
      • 創建一個軟件:軟件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進行等待間隔。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章