Python爬蟲之Requests庫

2021-09-27 18:44:08 字數 2423 閱讀 8063

所謂爬蟲就是模擬客戶端傳送網路請求,獲取網路響應,並按照一定的規則解析獲取的資料並儲存的程式。要說 python 的爬蟲必然繞不過 requests 庫。

對於 requests 庫,官方文件是這麼說的:

requests 唯一的乙個非轉基因的 python http 庫,人類可以安全享用。警告:非專業使用其他 http 庫會導致危險的***,包括:安全缺陷症、冗餘**症、重新發明輪子症、啃文件症、抑鬱、頭疼、甚至死亡。

這個介紹還是比較生動形象的,便不再多說。安裝使用終端命令pip install requests

2.1 傳送請求

匯入 requests 模組:

import requests
獲取網頁:

r = requests.get("")
此時,我們獲取了 response 物件 r,我們可以通過 r 獲取所需資訊。requests 簡便的 api 意味著所有 http 請求型別都是顯而易見的,我們來看一下使用常見 http 請求型別 get、post、put、delete 的示例:

r = requests.head("/get")r = requests.post("/post", data = )r = requests.put("/put", data = )r = requests.delete("/delete")
通常我們會設定請求的超時時間,requests 使用timeout引數來設定,單位是秒,示例如下:

r = requests.head("/get", timeout=1)
2.2 引數傳遞

在使用 get 方式傳送請求時,我們會將鍵值對形式引數放在 url 中問號的後面,如:/get?key=val,requests 通過 params 關鍵字,以乙個字串字典來提供這些引數。比如要傳key1=val1key2=val2/get,示例如下:

pms=r = requests.get("/get", params=pms)
requests 還允許將乙個列表作為值傳入:

pms=
:字典裡值為 none 的鍵都不會被新增到 url 的查詢字串裡。

2.3 響應內容

import requestsr = requests.get("")print(r.text)# 輸出結果#r = requests.get(url, headers=hds)
:自定義 headers 優先順序是低於一些特定的資訊的,如:在.netrc中設定了使用者認證資訊,使用 headers 設定的授權就不會生效,而當設定了auth引數,.netrc的設定會無效。所有的 headers 值必須是 string、bytestring 或者 unicode,通常不建議使用 unicode。

2.5 重定向與歷史

預設情況下,requests 會自動處理除了 head 以外的所有重定向,可以使用響應物件的history屬性來追蹤重定向,其返回為響應物件列表,這個列表是按照請求由晚到早進行排序的,看一下示例:

import requestsr = requests.get("")print(r.history)# 輸出結果#
如果使用的是get、post、put、delete、options、patch 可以使用allow_redirects引數禁用重定向。示例如下:

r = requests.get("", allow_redirects=false)
2.6 錯誤與異常

當遇到網路問題(如:dns 查詢失敗、拒絕連線等)時,requests 會丟擲 connectionerror 異常;在 http 請求返回了不成功的狀態碼時, response.raise_for_status() 會丟擲 httperror 異常;請求超時,會丟擲 timeout 異常;請求超過了設定的最大重定向次數,會丟擲 toomanyredirects 異常。所有 requests 顯式丟擲的異常都繼承自 requests.exceptions.requestexception。

Python爬蟲 HTTP協議 Requests庫

http協議 http hypertext transfer protocol 即超文字傳輸協議。url是通過http協議訪問資源的internet路徑,乙個url對應乙個資料資源。http協議對資源的操作 requests庫提供了http所有的基本請求方式。官方介紹 requests庫的6個主要方...

python 爬蟲系列02 認識 requests

本系列所有文章基於 python3.5.2 requests 是基於 urllib 的三方模組,相比於 uillib,操作更簡潔,功能更強大,而且支援 python3 getimport requests r requests.get url print r.status code print r....

python小白學習記錄 爬蟲requests篇

一 引用庫 import requests 二 請求訪問url,網頁相應 res requests.get 網頁位址 三 表明返回內容 目前返回的response物件有四種屬性 status code 檢查請求是否成功 content 將資料轉換為二進位制資料 text 將資料轉換為字串型資料 en...