1. 程式人生 > >1.7~1.8學習筆記

1.7~1.8學習筆記

requests.request()構造一個請求,支撐以下各方法的基礎方法

requests.get()獲取HTML網頁的主要方法,對應於HTTPGET

requests.head()獲取HTML網頁頭資訊的方法,對應於HTTPHEAD

requests.post()HTML網頁提交POST請求的方法,對應於HTTPPOST

requests.put()HTML網頁提交PUT請求的方法,對應於HTTPPUT

requests.patch()HTML網頁提交區域性修改請求,對應於HTTPPATCH

requests.delete()HTML網頁提交刪除請求,對應於

HTTPDELETE

 

下面六個都是通過呼叫第一個函式來實現的

 

r = requests.get(url)

構造一個向伺服器請求資源的Request物件

返回一個包含伺服器資源的Response物件

 

requests.get(url,params=None,**kwargs)

url:擬獲取頁面的url連結

paramsurl中的額外引數,字典或位元組流格式,可選

**kwargs12個控制訪問的引數

 

Response物件包含爬蟲返回的內容

 

Response物件的屬性:

r.status_code HTTP請求的返回狀態,200表示成功,404(其他)都表示失敗

r.text HTTP相應內容的字串形式,即,url對應的頁面內容

r.encoding HTTP header中猜測的響應內容編碼方式

r.apparent_encoding 從內容中分析出的響應內容編碼方式(備選編碼方式)

r.content HTTP響應內容的二進位制形式

 

如果header中不存在charset,則認為編碼方式為ISO-8859-1

encoding不能正確顯示內容的時候就應該使用apparent_encoding

 

Request庫異常:

request.ConnectionError 網路連線異常

request.HTTPError HTT 錯誤異常

request.URLRequired URL缺失異常

request.TooManyRedirects 超過最大重定向次數,重定向異常

request.ConnectionTimeout 連線遠端伺服器超時異常

request.Timeout 請求URL超時,超時異常

 

HTTP 超文字傳輸協議

URL格式 http://host[:port][path]

host:合法的Internet主機域名或IP地址

port:埠號,預設埠為80

path:請求資源的路徑

 

HTTP協議對資源的操作:

GET:請求獲取URL位置的資源

HEAD:請求獲取URL位置資源的響應訊息報告,即獲得該資源的頭部資訊

POST:請求向URL位置的資源後附加新的資料

PUT:請求向URL位置儲存一個資源,覆蓋原URL位置的資源

PATCH:請求區域性更新URL位置的資源,即改變該處資源的部分內容

DELETE:請求刪除URL位置儲存的資源

 

如果是要修改一組資料中的一部分欄位,用PATCH只需要向URL提交該部分區域性更新請求,如用PUT必須將整組資料的所有欄位一併提交到URL,未提交的欄位將會被刪除

PATCH最主要好處:節省網路頻寬

 

HTTP協議與Request庫功能一致

 

**kwargs:控制訪問的引數,以下為可選項:

params:字典或位元組序列,作為引數增加到url

data:字典、位元組序列或檔案物件,作為Request的內容

jsonJSON格式的資料,作為Request的內容

headers:字典,HTTP定製頭

cookies:字典或CookieJarRequest中的cookie

auth:元組,支援HTTP認證功能

file:字典型別,傳輸檔案

timeout:設定超時時間,秒為單位

proxies:字典型別,設定訪問代理伺服器,可以增加登入認證

allow_redirectsTrue/False,預設為True,重定向開關

streamTrue/False,預設為True,獲取內容立即下載開關

verityTrue/False,預設為True,認證SSL證書開關

cert:本地SSL證書路徑

 

requests.head(url,**kwargs)

requests.post(url,data=Node,json=None,**kwargs)

requests.put(url,data=Node,**kwargs)

requests.patch(url,data=Node,**kwargs)

requests.delete(url,**kwargs)

 

Robot協議:決定哪些內容可以被爬取