【爬蟲】Requests 庫的入門學習
阿新 • • 發佈:2018-12-20
此為北理嵩天老師mooc課程【網路爬蟲與資訊提取】的課程學習筆記。
1安裝 Requests 庫
使用命令列輸入:
pip install requests
或者:
python -m pip install requests
2 requests 的常用方法
方法名稱 | 說明 |
---|---|
requests.request() | 最基礎的,構造請求,支撐其他方法的使用 |
.get() | 獲取 html 網頁的主要方法,對應GET |
.head() | 獲取html網頁頭資訊,對應HEAD |
.post() | 向html網頁提交post請求 |
.put() | 向網頁提交PUT請求 |
.patch | 向網頁提交區域性修改的請求 |
.delete() | 向網頁提交刪除的請求 |
獲取資料可以使用head和get 傳送修改可以使用ppost、patch、put等方法。 patch 和 put的區別在於patch可以只提交需要更新的資料,而put需要將所有欄位資料重新提交,不更改的會被刪除。
get方法
構造向伺服器請求資源的requests物件,返回的的為response物件,包含各種資訊。
requests.get(url, params=None, **kwargs)
包含頁面連結、URL額外引數字典或位元組流格式、其他訪問控制可選引數。 Response 返回的常見屬性:非函式無()
屬性名稱 | 說明 |
---|---|
r.status_code | Http 請求的返回狀態,200成,404或其他為失敗。 |
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 | 使用者訪問url重定向次數過多 |
requests.ConnectTimeout | 僅指與遠端伺服器連線時的超時異常 |
requests.Timeout | 發起到獲得URL整個過程的超時異常 |
判斷返回的response型別的狀態是不是200,如果返回的不是200說明有錯誤,在程式中產生requests.HTTPError異常
r.raise_for_status()
爬取網頁的通用程式碼框架:
import requests
def getHTMLText(url):
try:
r = requests.get(url , timeout=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "產生異常"
if __name__ == "__main__":
url = "https://www.csdn.net/"
print(getHTMLText(url))