1. 程式人生 > >爬蟲-相關庫知識整理(更新)

爬蟲-相關庫知識整理(更新)

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

爬蟲-相關庫知識整理(更新)