爬蟲-相關庫知識整理(更新)
阿新 • • 發佈:2019-03-24
超文本 ram 可選 header 報告 exceptio ppa head 遠程
requests庫主要方法
import requests requests.request(method, url, **kwargs) """構造一個請求,支撐下面各種基礎方法""" # **kwarg包括params, data, json, headers, cookies, auth, files, timeout, proxies(設代理服務器),
# allow_redirexts, stream, verify 12個訪問控制參數
requests.get(url, params=None, **kwargs) """獲取html網頁的主要方法,對應HTTP的GET""" requests.head(url, **kwargs) """獲取html網頁頭信息的方法,對應HTTP的HEAD""" requests.post(url, data=None, json=None, **kwargs) """向html頁面提交POST請求""" requests.put(url, data=None, **kwargs) """向html頁面提交PUT請求""" requests.patch(url, data=None, **kwargs) """向html頁面提交局部修改請求""" requests.delete(url, **kwargs) """向html頁面提交刪除請求"""
1.requests.get(url, params=None, **kwargs)
url:你獲取頁面的url鏈接;
params:url中額外參數,字典或字節流格式,可選;
**kwargs:12個控制訪問的參數;
r = requests.get(url)返回一個包含服務器資源的Response對象r,r包含了爬蟲返回的全部內容。其中r有5中常用的屬性
r.status_code """返回HTTP請求的狀態碼, 200表示成功,404表示失敗""" r.text """HTTP響應內容的字符串形式,url對應頁面內容""" r.encoding """從HTTP header中猜測的相應內容編碼方式""" r.apparent_encoding """從內容中分析出的響應內容編碼方式""" r.content """HTTP響應內容的二進制形式"""r.raise_for_status """判斷狀態碼是否正確,如果不是200就raise HTTPException"""
2.requests庫的異常類型
requests.ConnectionError """網絡連接異常,DNS查詢失敗,拒絕連接等""" requests.HTTPError """HTTP連接錯誤""" requests.URLRequired """URL缺失異常""" requests.TooManyRedirects """超過最大重定向次數,產生重定向異常""" requests.ConnectTimeout """連接遠程服務器時超時""" requests.Timeout """請求URL超時"""
通過以上兩點一般的爬取通用框架就可以大致勾畫出來
1 import requests 2 3 def getHTMLText(url): 4 try: 5 r = requests.get(url, timeout=30) 6 r.raise_for_status() # 如果狀態碼錯誤,則拋出異常 7 r.encoding = r.apparent_encoding 8 return r.text 9 except: 10 return "產生異常" 11 12 if __name__ == "__main__": 13 url = "https://i.cnblogs.com/EditPosts.aspx?opt=1" 14 print(getHTMLText(url))
3.HTTP協議
超文本傳輸協議(HTTP)是一種基於”請求與響應“模式的、無狀態的應用層協議。HTTP協議一般采用URL作為網絡定位的標識。(http://host[:port][path])
而URL就是通過HTTP協議存取資源的Internet路徑,一個URL對應一個數據資源。
HTTP協議對資源的操作方法(method)主要有:GET, HEAD, POST, PUT, PATCH, DELETE對應requests庫的幾個方法,功能也一致。
GET:請求獲得URL位置的資源;
HEAD:請求獲取URL位置資源的響應消息報告,即該資源的頭部信息
POST:請求向URL位置的資源後附加新的數據
PUT:請求向URL位置存儲一個資源,覆蓋原URL位置的資源
PATCH:請求局部更新URL位置的資源,改變該資源的部分內容
DELETE:請求刪除URL位置存儲的資源
爬蟲-相關庫知識整理(更新)