一、安裝
Windows平臺:運行cmd,執行pip install requests
測試(以百度爲例):
import requests
r = requests.get("http://www.baidu.com")
print(r.status_code)
二、Requests庫的7個主要方法
1、requests.request() 構造一個請求,支撐以下各方法的基礎方法
method | 請求方式,對應get/put/post等7種 |
url | 擬獲取頁面的url鏈接 |
**kwargs | 控制訪問的參數,共13個 |
2、requests.get() 獲取HTML網頁的主要方法,對應於HTTP的GET
(1)r = requests.get(url)
其中r返回一個包含服務器資源的Response對象(Response對象包含服務器返回的所有信息,也包含請求的Request信息);get()方法構造一個向服務器請求資源的Request對象
r.status_code | HTTP請求的返回狀態,200表示連接成功,404表示失敗 |
r.text | HTTP響應內容的字符串形式,即,url對應的頁面內容 |
r.encoding | 從HTTP header中猜測的響應內容編碼方式 |
r.apparent_encoding | 從內容中分析出的響應內容編碼方式(備選編碼方式) |
r.content | HTTP響應內容的二進制形式 |
備註 | r.encoding:如果header中不存在charset,則認爲編碼爲ISO‐8859‐1 r.text根據r.encoding顯示網頁內容 r.apparent_encoding:根據網頁內容分析出的編碼方式 可以看作是r.encoding的備選 |
(2)requests.get(url, params=None, **kwargs)
url : 擬獲取頁面的url鏈接
params : url中的額外參數,字典或字節流格式,可選
**kwargs: 12個控制訪問的參數
(3)get()方法的定義
3、requests.head() 獲取HTML網頁頭信息的方法,對應於HTTP的HEAD
4、requests.post() 向HTML網頁提交POST請求的方法,對應於HTTP的POST
5、requests.put() 向HTML網頁提交PUT請求的方法,對應於HTTP的PUT
6、requests.patch() 向HTML網頁提交局部修改請求,對應於HTTP的PATCH
7、requests.delete() 向HTML頁面提交刪除請求,對應於HTTP的DELETE
三、爬蟲代碼的通用框架
1、requests庫異常
requests.ConnectionError | 網絡連接錯誤異常,如DNS查詢失敗、拒絕連接等 |
requests.HTTPError | HTTP錯誤異常 |
requests.URLRequired | URL缺失異常 |
requests.TooManyRedirects | 超過最大重定向次數,產生重定向異常 |
requests.ConnectTimeout | 連接遠程服務器超時異常 |
requests.Timeout | 請求URL超時,產生超時異常 |
2、response的異常
r.raise_for_status() | 如果不是200,產生異常 requests.HTTPError |
r.raise_for_status()在方法內部判斷r.status_code是否等於200,不需要增加額外的if語句,該語句便於利用try‐except進行異常處理
3、爬取網頁的通用代碼框架
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協議
HTTP,Hypertext Transfer Protocol,超文本傳輸協議HTTP是一個基於“請求與響應”模式的、無狀態的應用層協議 HTTP協議採用URL作爲定位網絡資源的標識,URL格式如下:http://host[:port][path]
host: 合法的Internet主機域名或IP地址
port: 端口號,缺省端口爲80
path: 請求資源的路徑
HTTP URL實例:http://www.bit.edu.cn http://220.181.111.188/duty
HTTP URL的理解: URL是通過HTTP協議存取資源的Internet路徑,一個URL對應一個數據資源
GET | 請求獲取URL位置的資源 |
HEAD | 請求獲取URL位置資源的響應消息報告,即獲得該資源的頭部信息 |
POST | 請求向URL位置的資源後附加新的數據 |
PUT | 請求向URL位置存儲一個資源,覆蓋原URL位置的資源 |
PATCH | 請求局部更新URL位置的資源,即改變該處資源的部分內容 |
DELETE | 請求刪除URL位置存儲的資源 |