python爬蟲學習筆記二:Requests庫詳解及HTTP協議
Requests庫的安裝:https://mp.csdn.net/postedit/83715574
r=requests.get(url,params=None,**kwargs)
這個r是Response物件
url :擬獲取頁面的url連結
params:url中的額外引數,字典或位元組流格式,可選
**kwargs:12個控制訪問的引數
Requests庫的2個重要物件
Requests庫的7個主要方法
方法 | 說明 |
requests.request() | 構造一個請求,支撐一下各方法的基礎方法 |
requests.get() | 獲取HTML網頁的主要方法,對應於HTTP的GET |
requests.head() | 獲取HTML網頁頭資訊的方法,對應於HTTP的HEAD |
requests.post() | 向HTML網頁提交POST請求的方法,對應於HTTP的POST |
requests.put() | 向HTML網頁提交PUT請求的方法,對應於HTTP的PUT |
requests.patch() | 向HTML網頁提交區域性修改請求,對應於HTTP的PATCH |
requests.delete() | 向HTML頁面提交刪除請求,對應於HTTP的DELETE |
Response物件包含爬蟲返回的內容
Response物件屬性:
r.status_code HTTP請求的返回狀態,200表示連結成功,404表示失敗,返回不為200都是失敗的
r.text HTTP響應內容的字串形式,即url對應的頁面內容
r.encoding 從HTTP header中猜測的響應內容編碼方式
r.apparent_encoding 從內容中分析出響應內容編碼方式(備選編碼方式)
r.content HTTP響應內容的二進位制形式
理解Requests庫的異常
異常 | 說明 |
requests.ConnectionError | 網路連線錯誤異常,如DNS查詢失敗、拒絕連線等 |
requests.HTTPError | HTTP錯誤異常 |
requests.URLRequired | URL缺失異常 |
requests.TooManyRedirects | 超過最大重定向次數,產生重定向異常 |
requests.ConnectTimeout | 連線遠端伺服器超時異常 |
requests.Timeout | 請求URL超時,產生超時異常 |
理解Response物件非常重要。
理解Requests庫的異常,通用程式碼框架:
r.raise_for_status() 如果不是200,產生異常requests.HTTPError ,用這個結合try catch可以丟擲異常,寫在try裡面,判斷網站的響應狀態,如果未響應丟擲異常,執行catch裡面的方法。
import requests
def getHTMLText(url)
try:
r=requests.get(url,timeout=30)
r.raise_for_status() #如果狀態不是200,引發HTTPError異常
r.encoding=r.apparent_encoding
return r.text
except:
return "產生異常"
if _name_=="_main_":
url="http://www.baidu.com"
print(getHTMLText(url))
HTTP協議
url格式:http://host[:port][path]
port:埠號,預設埠為80
path:請求資源的路徑
url是通過HTTP協議存取資源的Internet路徑,一個URL對應一個數據資源
HTTP協議對資源的操作
方法 說明
GET 請求獲取URL位置的資源
HEAD 請求獲取URL位置資源的響應訊息報告,即獲取該資源的頭部資訊
POST 請求向URL位置的資源後附加新的資料
PUT 請求向URL位置儲存一個資源,覆蓋原URL位置的資源
PATCH 請求區域性更新URL位置的資源,即改變該處資源的部分內容
DELETE 請求刪除URL位置儲存的資源
理解PATCH和PUT的區別!
head和get是最常用到的!