request,ProxyHandle與HttpCookiProcessor函數用法
必要知識
在進行函數學習之前,我們需要了解瀏覽器在對伺服器數據進行請求時,發送的請求頭的信息。 請求頭中的信息,包含了瀏覽器中一些比較重要的信息。 比如use_agent,cookies,Connection,Referer等信息。
use_agent: 用來指定瀏覽器請求頭,有了use_agent, 伺服器才會去識別你是哪個瀏覽器,才會給你發送相應的數據,有時你不攜帶use_agetn, 伺服器就會識別你是一個非法的請求,而不會給你返回頁面。
cookies: 指某些網站為了辨別用戶身份而儲存在用戶本地終端(Client Side)上的數據(通常經過加密)。 比如當登錄一個網站時,如果你上次登錄過並選擇下次自動登錄,那麼下次訪問同一網站時,你不用輸入用戶名和密碼就登錄上了。
Connection: 設置連接模式,基本使用Keep-Alive模式,Keep-Alive功能使客戶端到服 務器端的連接持續有效,當出現對伺服器的後繼請求時,Keep-Alive功能避免了建立或者重新建立連接
Referer: 表示網站的來源,比如你可能是通過搜索百度, 或者搜索google來到這個網站的。 它的作用是為了防盜鏈和防止惡意請求。
狀態碼
如何判斷自己的請求是否成功呢, 我們就需要用到狀態碼。
返回200, 說明我們請求成功。
request函數
在請求時,我們用Request Headers 的配置信息模擬瀏覽器進行匹配請求,伺服器判斷你是由瀏覽器發送出的請求,從而給你返回結果。 而要設置Headers信息,模擬成瀏覽器, 就需要用Request()函數來包裝Headers的數據
參數設置:
Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
常用參數說明
url:需要請求的網站
headers:模擬瀏覽器進行請求
data: 登錄賬號請求數據
ProxyHandler函數
網站會檢測某一段時間內某個IP的訪問次數,如果訪問次數過多,它會禁止你的訪問,所以這個時候需要通過ProxyHandler( )設置代理,用build_opener將proxy_handler當做參數傳過來 。
ip地址我們可以從網站http://www.xicidaili.com/nn和網https://www.kuaidaili.com 中獲取到。
這樣我們就用指定ip地址請求出數據。我們在運行爬蟲的時候可以一直切換ip地址,這樣伺服器就會認為是從不同的地方登陸, 而不會封掉爬蟲。
HTTPCookiProcessor( )函數
有些網站尤其是社交類網站,需要登陸才能抓取到網站的數據。我們需要模擬用戶登陸網站,保留登陸狀態,才能獲取網站相關的內容
cookies 主要用來維持我們的登陸狀態。
比如我們在百度首頁登陸百度賬號, 然後刷新網頁,我們就會看到常用的cookies
然後我們在百度鏈接上點擊右鍵,選擇清除cookies, 再刷新網頁, 就會看到百度賬號需重新登陸。
cookie中保存中我們常見的登錄信息,我們可以用HTTPCookiProcessor獲取、存儲cookie,來爬取需要登陸認證的網頁。
以上就是request模塊中函數的全部用法
TAG:怪獸宇 |