1. 程式人生 > >Python爬蟲------requests庫

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位置儲存的資源