Requests庫的7個主要方法
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
HTTP協議對資源的操做(6種)與以上方法一一對應
GET:請求URL位置的資源
HEAD:請求獲取URL位置資源的響應消息報告,即得到該資源的頭部信息
POST:請求向URL位置的資源後附加新的數據
PUT:請求向URL位置存儲一個資源,覆蓋原URL位置的資源
PATCH:請求局部更新URL位置的資源,即改變該處資源的部份內容
DELETE:請求刪除URL位置存儲的資源
【注】PATCH和PUT的區別
假設URL位置有一組數據UserInfo,包括UserID,UserName等20個字段
需求:用戶修改了UserName,其餘不變
*採用PATCH方法,僅向URL提交UserName的局部更新請求
*採用PUT方法,因爲他會覆蓋原有URL位置資源,
因此必須將全部20個字段一併提交到URL,未提交字段被刪除
比較PATCH和PUT看出
Patch的最主要好處:節省網絡帶寬
HTTP協議:HypertextTransferProtocol,超文本傳輸協議
它是一個基於"請求與相應"模式的、
無狀態的(第一次請求和第二次無相關關聯)應用層協議
它通常採用URL做爲網絡資源的標識
URL是經過HTTP協議存取資源的Internet路徑,一個URL對應一個數據資源
URL格式以下 http://host[:port][path]
host:合法的Internet主機域名或IP地址
port:端口號,缺省(默認)端口爲80P
path:請求資源的路徑
當咱們向URLPOST一個字典或POST一個鍵值對時會默認地被存儲到表單form的字段下
當咱們向URLPOST字符串時會默認地被存儲到data的字段下
服務器會根據提交的數據類型不一樣進行相關的整理
PUT方法相同,可是會把原有數據覆蓋掉json
'''
requests.request(method,url,**kwargs)
method:請求方式,對應get/put/post等7種
requests.request('GET',url,**kwargs)
requests.request('HEAD',url,**kwargs)
requests.request('POST',url,**kwargs)
requests.request('PUT',url,**kwargs)
requests.request('PATCH',url,**kwargs)
requests.request('delete',url,**kwargs)
requests.request('OPTIONS',url,**kwargs)
#向服務器獲取一些與客戶端打交道的參數,不與資源直接相關因此使用較少
url:擬獲取頁面的url連接
**kwargs:控制訪問參數,共13個服務器
'''網絡
#顯式定義的參數放在了形參裏面,不怎麼用的放在了可選裏面
'''
###########################最經常使用
requests.get(url,params=None,**kwargs)
url:擬獲取頁面的url連接
params:url中的額外參數,字典或字節流格式,可選
**kwargs:12個控制訪問參數(request方法中除了param以外的12個)
'''app
'''
requests.head(url,**kwargs)
url:擬獲取頁面的url連接
**kwargs:13個控制訪問參數
'''
'''
requests.post(url,data=None,json=None,**kwargs)
url:擬獲取頁面的url連接
data:字典、字節序列或文件,Request的內容
json:JSON格式的數據,Request的內容
**kwargs:11個控制訪問參數(除了以上兩個的11個)
'''
'''
requests.put(url,data=None,**kwargs)
url:擬獲取頁面的url連接
data:字典、字節序列或文件,Request的內容
**kwargs:12個控制訪問參數(除了以上1個的12個)
'''
'''
requests.patch(url,data=None,**kwargs)
url:擬獲取頁面的url連接
data:字典、字節序列或文件,Request的內容
**kwargs:12個控制訪問參數(除了以上1個的12個)
'''
'''
requests.delete(url,**kwargs)
url:擬獲取頁面的url連接
**kwargs:13個控制訪問參數
'''框架
''' 爬取網頁的通用代碼框架 通用代碼框架:一組代碼,能夠準確的爬取網頁上的內容 用request庫進行網頁訪問的時候常常用get函數 requests.get(url)得到url的相關內容 可是網絡鏈接有風險 這樣的語句並非必定成立的,因此異常處理很重要 request庫支持6種經常使用的鏈接異常 ''' #request.ConnectionError:網絡鏈接異常,如DNS查詢失敗、拒絕鏈接等 #request.HTTPError:HTTP錯誤異常 #request.URLRequired:URL缺失異常 #request.TooManyRedirects:超過最大重定向次數,產生重定向異常 #request.ConnectTimeout:鏈接遠程服務器超時異常 #request.TimeOut:請求URL超時,產生超時異常 ''' Response類與異常打交道的方法 r.raise_for_status():若是不是200,產生異常request.HTTPError 判斷返回的response類型狀態是否是200 ''' import requests def getHTMLText(url): try: r=requests.get(url,timeout = 30)#,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))