Python爬蟲------requests庫
1.requests庫中主要包括的方法有7個:
requests.request():構造一個請求,支撐一下各方法的基礎方法
requests.get():獲取HTML網頁的主要方法,對應於HTTP的GET
requests.head():獲取HTML網頁的頭資訊方法,對應HTTP的HEAD
requests.post():向HTML網頁提交POST請求的方法,對應HTTP的POST
requests.put():向HTTML網頁提交PUT請求的方法,對應HTTP的PUT
requests.patch():向HTML網頁提交區域性修改請求,對應HTTP的PATCH
requests.delete():向HTML頁面提交刪除請求,對應HTTP的DELETE
(1)requests.request()介紹
其實requests只有一個方法,也就是request()方法,其它的6個方法都是通過request()方法封裝得到的
引數:requests.request(method, url, **kwargs)
method:請求方式,對應GET/HEAD/POST/PUT/PATCH/DELETE/OPTIONS 共7種
url:獲取頁面的url連線
**kwargs:包括13個控制訪問控制引數(params,data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(2)requests.get()介紹 #最常用
引數:rquests.get(url, params = None, **kwargs)
url:獲取頁面的url連線
params:url中的額外引數,字典或位元組格式,可選
**kwargs:包括13個控制訪問控制引數(data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(3)requests.head()介紹 #第二常用
引數:requests.head(url, **kwargs)
**kwargs:包括13個控制訪問控制引數(params,data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(4)requests.post()介紹
引數:requests.post(url, data=None,json=None,**kwargs)
url:獲取頁面的url連線
data:字典、位元組序列或檔案,Request的內容
json:JSON格式的資料,Request的內容
**kwargs:包括11個控制訪問控制引數(params,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(5)requests.put()介紹
引數:requests.put(url, data=None,**kwargs)
url:擬更新頁面的url連線
data:字典、位元組序列或檔案,Request的內容
**kwargs:包括12個控制訪問控制引數(params,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(6)requests.patch()介紹
引數:requests.patch(url, data=None,**kwargs)
url:擬更新頁面的url連線
data:字典、位元組序列或檔案,Request的內容
**kwargs:包括12個控制訪問控制引數(params,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
(7)requests.delete()介紹
url:擬刪除頁面的url連結
*kwargs:**kwargs:包括13個控制訪問控制引數(params,data,json,headers,cookies,auth,files,timeout,proxies,allow_redirects,stream,verify,cert)
2.Requst和Response---------requests庫的兩個重要物件
(1)Response物件的屬性
r.status_code:HTTP請求的放回狀態,200表示連線成功,404(非200)表示失敗
r.headers:HTTP響應內容的字串形式,即url對應的頭部內容
r.text:HTTP響應內容的字串形式,即url對應的頁面內容
r.encoding:從HTTP header中猜測相應內容的編碼形式(如果header中不存在charset,則認為編碼為ISO-8859-1)
r.apparent_encoding:從內容中分析出的相應內容編碼形式(備選編碼方式),比r.encoding正確。
r.content:HTTP相應內容的二進位制形式
r.raise_for_status():如果不是200,產生異常requests.HTTPError
3.requests庫中的異常
requests.ConnectionError
requests.HTTPError
requests.URLRequired
requests.TooManyRedirects
requests.ConnectTimeout
requests.Timeout
4.爬去頁面的通用程式碼框架
import requests
def getHTMLTxet(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..con"
print(getHTMLText(url))
5.HTTP協議對資源的操作(每個操作與requests的同名方法一致)
GET:請求獲取url位置的資源
HEAD:請求獲取url位置資源的響應訊息報告,即獲得該資源的頭部資訊
POST:請求向ul位置的資源後附加新的資料
PUT:請求向url位置儲存一個資源,覆蓋原url位置的資源
PATCH:請求區域性更新url位置的資源,即改變該處資源的部分內容
DELETE:請求刪除url位置儲存的資源