r=requests.get(url,params=None,**kwargs)
1, 使用get函數會內部生成一個Request對象,以及一個Response對象(也就是 r );python
Response對象(r)包含了Request對象發送的所有信息以及爬蟲返回的所有內容;編程
1.1 URL:全稱爲Uniform Resource Locator統一資源定位符,包含了協議,服務器名稱,路徑和文件名等信息。json
API:全稱爲application programming interface;應用程序編程接口;瀏覽器
1.2 params:字典或字符串格式做爲參數增長到url中,是額外參數。服務器
1.3 **kwargs:表明十二個控制訪問的參數;cookie
(1)data:字典,字符串或文件對象,做爲Request對象的內容;網絡
(2)json: JSON格式的數據做爲Request對象的內容;app
(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: 請求資源的路徑;