r=requests.get(url,params=None,**kwargs)
1, 使用get函數會內部生成一個Request對象,以及一個Response對象(也就是 r );
Response對象(r)包含了Request對象發送的全部信息以及爬蟲返回的全部內容;
1.1 URL:全稱為Uniform Resource Locator統一資源定位符,包含了協議,服務器名稱,路徑和文件名等信息。
API:全稱為application programming interface;應用程序編程接口;
1.2 params:字典或字符串格式作為參數增加到url中,是額外參數。
1.3 **kwargs:代表十二個控制訪問的參數;
(1)data:字典,字符串或文件對象,作為Request對象的內容;
(2)json: JSON格式的數據作為Request對象的內容;
(3)headers:字典,HTTP頭部信息;目的是將請求偽裝成諸如瀏覽器,使用post方法向服務器發起訪問;
(4)cookies:字典或者CookieJar,Request中的cookie;
(5) auth:元組,支持HTTP認證功能;
(6)files: 字典類型,向服務器傳輸文件;
(7)timeout: 設定超時時間,單位秒;
(8)proxies:字典類型,設定訪問代理服務器,可以增加登錄認證;
(9) allow_redirects:True/False,默認為True,重定向開關; //高級功能使用
(10)stream: 布爾值,默認為真,獲取內容立即下載開關;//高級功能使用
(11)verify:布爾值,默認為真,認證SSL證書開關; //高級功能使用
(12)cert:保存本地SSL證書路徑; //高級功能使用
13個參數通過賦值的方法來調用
2, requests庫的七個主要方法:
requests.request(method,url,**kwargs)
requests.get(url,params=None,**kwargs)
requests.head(url,**kwargs) requests.post(url,data=None,json=None,**kwargs) requests.put(url,data=None,**kwargs) requests.patch(url,data=None,**kwargs)
requests.delete(url,**kwargs)
2.1 request方法:向url頁面構造一個請求,其余六種方法通過調用封裝好的request函數來實現的;
2.2 get方法: 獲取一個HTML頁面的信息;對應於HTTP的GET;
2.3 head方法:獲取HTML網頁的頭部信息;對應於HTTP的HEAD;
2.4 post方法:向HTML網頁提交POST請求;對應於HTTP的POST;
(根據提交內容的不同,自動存儲信息為form形式或者data形式)
2.5 put方法:向HTML網頁提交PUT(全局修改)請求;對應於HTTP的PUT;
(根據提交內容的不同,自動存儲信息為form形式或者data形式)
2.6 patch方法:向HTML網頁提交局部修改請求;對應於HTTP的PATCH;
2.7 delete方法:向HTML網頁提交刪除請求;對應於HTTP的DELETE;
3, 通用代碼框架:
try: r=requests.get(url,timeout=30) r.raise_for_status() r.encoding=r.apparnet_encoding() return r.text except: return"產生異常"
4, Response對象的屬性:
4.1 r.status_code: HTTP請求返回的狀態,200表示成功,404和其他表示失敗;
4.2 r.text: 響應內容的字符串形式;
4.3 r.encoding: 從響應內容的頭部信息來推斷編碼形式
4.4 r.apparent_encoding: 從響應內容的內容信息來推斷編碼形式;
4.5 r.content: 將爬取到的響應內容的二進制形式還原成響應內容;
Response對象提供了一個單獨的方法raise_for_status()方法
r.raise_for_status() : HTTP的請求返回狀態不是200則產生 request.HTTPError;
5, requests庫的異常處理:
5.1 requests.ConnectionError: 網絡連接錯誤異常,如DNS查詢失敗,拒絕連接等;
5.2 requests.HTTPError: HTTP錯誤異常
5.3 requests.URLRequired: URL缺失異常
5.4 requests.TooManyRedirects: 超過最大重定向次數,產生重定向異常;
5.5 requests.ConnectTimeout: 連接遠程服務器超時異常;
5.6 requests.Timeout: 請求URL超時,產生超時異常;
6, HTTP協議:Hypertext Transfer Protocol 超文本傳輸協議;是一個基於“請求與響應”模式的,無狀態的(非時序)應用層協議;
host: Internet主機域名或IP地址;
port: 端口號,缺省端口默認為80;
path: 請求資源的路徑;