Requests庫的安裝:https://mp.csdn.net/postedit/83715574python
r=requests.get(url,params=None,**kwargs)服務器
這個r是Response對象網絡
url :擬獲取頁面的url連接app
params:url中的額外參數,字典或字節流格式,可選框架
**kwargs:12個控制訪問的參數post
Requests庫的2個重要對象網站
方法 | 說明 |
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對象包含爬蟲返回的內容ui
Response對象屬性:編碼
r.status_code HTTP請求的返回狀態,200表示連接成功,404表示失敗,返回不爲200都是失敗的url
r.text HTTP響應內容的字符串形式,即url對應的頁面內容
r.encoding 從HTTP header中猜想的響應內容編碼方式
r.apparent_encoding 從內容中分析出響應內容編碼方式(備選編碼方式)
r.content HTTP響應內容的二進制形式
異常 | 說明 |
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對應一個數據資源
方法 說明
GET 請求獲取URL位置的資源
HEAD 請求獲取URL位置資源的響應消息報告,即獲取該資源的頭部信息
POST 請求向URL位置的資源後附加新的數據
PUT 請求向URL位置儲存一個資源,覆蓋原URL位置的資源
PATCH 請求局部更新URL位置的資源,即改變該處資源的部份內容
DELETE 請求刪除URL位置存儲的資源
理解PATCH和PUT的區別!
head和get是最經常使用到的!