Request庫:封裝了自動(dòng)爬取HTML頁面,自動(dòng)網(wǎng)絡(luò)請求提交的方法的庫
Request庫的7個(gè)主要方法:
requests.request():構(gòu)造一個(gè)請求,是一下個(gè)方法的基礎(chǔ)
requests.get():獲取HTML網(wǎng)頁的主要方法,對應(yīng)于HTTP的GET
requests.head():獲取HTML網(wǎng)頁頭部信息的方法,對應(yīng)HTML的HEAD
requests.post():向HTML網(wǎng)頁提交POST請求的方法,對應(yīng)于HTTP的POST
requests.put():向HTML網(wǎng)頁提交PUT請求的方法,對應(yīng)于HTTP的PUT
requests.patch():向HTML網(wǎng)頁提交局部修改請求的方法,對應(yīng)于HTTP的PATCH
requests.delete():向HTML頁面提交刪除請求的方法,對應(yīng)于HTTP的DELETE
get()方法
r = requests.get()
r 是返回的一個(gè)包含服務(wù)器資源的Response對象,get()方法構(gòu)造一個(gè)向服務(wù)器發(fā)送請求的Request對象
requests.get()
requests.get(url,params=None,**kwargs)
url:擬獲取頁面的url連接
params :url中的額外參數(shù),字典或字節(jié)流格式,可選
**kwargs:12個(gè)訪問控制參數(shù)
Request對象
Response包含服務(wù)器返回的所有信息,也包含了Request的請求信息
Response對象的屬性
r.status_code:HTTP請求的返回狀態(tài),200表示成功,400表示失敗
r.encoding:從HTTP請求的head中猜測的響應(yīng)內(nèi)容編碼格式,默認(rèn)是IOS8859-1
r.apparent_encoding:從返回內(nèi)容中分析的編碼方式(備選編碼方式)
r.textHTTP:響應(yīng)內(nèi)容的字符串形式,url對應(yīng)的而頁面內(nèi)容
r.contentHTTP:相應(yīng)內(nèi)容的二進(jìn)制形式
簡單爬蟲demo:
import requests
def getHTMLText(url):
?????try: r = requests.get(url, timeout=30)?
????????r.raise_for_status() # 如果狀態(tài)不是200, 引發(fā)HTTPError異常
?????????r.encoding = r.apparent_encoding
?????return r.text except: return "產(chǎn)生異常"?
if __name__=="__main__":?
????url = "http://www.baidu.com"?
????print(getHTMLText(url))
Request庫的異常:
ConnectionError:網(wǎng)絡(luò)連接異常,如DNS查詢失敗、拒絕連接等
HTTPError:HTTP錯(cuò)誤異常
URLRequest:url確實(shí)異常
TooManyRedirects:超過最大重定向次數(shù)異常
ConnectionTimeout:網(wǎng)絡(luò)連接超時(shí)
Timeout:請求url超時(shí)