python爬蟲-Requests庫入門
爬蟲定義
爬蟲:是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。
reuqests安裝
requests庫是python的第三方庫,是一個比較簡單好用的爬蟲庫
打開命令行直接使用pip安裝requests第三方庫
pip install requests
requests方法
HTTP協議對資源的操作
方法 | 說明 |
---|---|
GET | 請求獲取URL位置的資源 |
HEAD | 請求獲取URL位置資源的響應消息報告,即獲得該資源的頭部信息 |
POST | 請求向URL位置的資源後附加新的數據 |
PUT | 請求向URL位置存儲一個資源,覆蓋原URL位置的資源 |
PATCH | 請求局部更新URL位置的資源,即改變該處資源的部分內容 |
DELETE | 請求刪除URL位置存儲的資源 |
方法裏的參數
**kwargs:控制訪問的參數,均爲可選項
參數 | 說明 |
---|---|
params | 字典或字節序列,作爲參數增加到url中 |
data | 字典、字節序列或文件對象,作爲Request的內容 |
json | JSON格式的數據,作爲Request的內容 |
headers | 字典, HTTP定製頭 |
cookies | 字典或cookieJar , Request中的cookie |
auth | 元組,支持HTTP認證功能 |
files | 字典類型,傳輸文件 |
timeout | 設定超時時間,秒爲單位 |
proxies | 字典類型,設定訪問代理服務器,可以增加登錄認證 |
allow_redirects | True/False ,默認爲True ,重定向開關 |
stream | True/False ,默認爲True ,獲取內容立即下載開關 |
verify | True/False ,默認爲True ,認證SSL證書開關 |
cert | 本地SSL證書路徑 |
requests.request( )
構造一個請求,支撐以下各方法的基礎方法
格式:requests.request(method, url,**kwargs)
method:請求方式
url:獲取頁面url鏈接
**kwargs:13個控制訪問的參數
requests.get( )
獲取HTML網頁的主要方法,對應於HTTP的GET
格式:requests.get(url, parems=none, **kwargs)
括號裏除了url,其餘看情況選擇合適的參數
parems:字典或字節序列,作爲參數增加到url中,可選項
requests.head( )
獲取HTML網頁頭信息的方法,對應於HTTP的HEAD
格式:requests.head(url, **kwargs)
requests.post( )
向HTML網頁提交POST請求的方法,對應於HTTP的POST
格式:requests.post(url, data=none, json=none, **kwargs)
data:字典、字節序列或文件,Request的內容
json:JSON格式的數據,Request的內容
requests.put( )
向HTML網頁提交PUT請求的方法,對應於HTTP的PUT
格式:requests.put(url, data=none, **kwargs)
put必須將URL位置的全部字段提交,未提交字段被刪除
requests.patch( )
向HTML網頁提交局部修改請求,對應於HTTP的PATCH
格式:requests.patch(url, data=none, **kwargs)
patch僅向URL位置提交部分字段的更新請求,相比put請求節省網絡帶寬
requests.delete( )
向HTML頁面提交刪除請求,對應於HTTP的DELETE
格式:requests.delete(url, **kwargs)
requests對象
屬性 | 說明 |
---|---|
r.status_code | HTTP請求的返回狀態, 200表示連接成功, 404表示失敗 |
r.text | HTTP響應內容的字符串形式,即url對應的頁面內容 |
r.encoding | 從HTTP header中猜測的響應內容編碼方式 |
r.apparent_encoding | 從內容中分析出的響應內容編碼方式(備選編碼方式) |
r.content | HTTP響應內容的二進制形式 |
r.headers | 返回字典形式的響應頭 |
r.cookies | 返回響應的cookie |
requests異常
異常 | 說明 |
---|---|
requests.ConnectionError | 網絡連接錯誤異常,如DNS查詢失敗、拒絕連接等 |
requests.HTTPError | HTTP錯誤異常 |
requests.URLRequired | URL缺失異常 |
requests.TooManyRedirects | 超過最大重定向次數,產生重定向異常 |
requests.ConnectTimeout | 連接遠程服務器超時異常 |
requests.Timeout | 請求URL超時,產生超時異常 |
r.raise_ for_status( )方法可以判斷返回的狀態碼是否爲200,如果不是200返回異常。使用時不用if判斷r.status_code返回的狀態碼,直接使用try- except語句進行異常處理。
爬取網頁通用框架
import requests
def getHTMLText(url):
try:
r = requests.get(url, timeout=10) # 設定請求時間,超時異常
r.raise_for_status() # 如果狀態不是200,引發HTTPError異常
r.encoding = r.apparent_encoding # 將根據網頁內容分析出的編碼方式當作輸出時的編碼
return r.text
except:
return "產生異常"
if __name__ == "__main__":
url = "https://www.baidu.com"
print(getHTMLText(url))
以上均爲個人學習筆記,如有錯誤請指正,共同學習,謝謝。