Python之requests模組相關介紹

2021-10-12 10:12:33 字數 4191 閱讀 9159

在之前的文章中我們一直用到的庫是 urllib.request,該庫已經包含了平常我們使用的大多數功能,但是它的 api 使用起來讓人感覺不太好,而 requests 自稱 「http for humans」,說明使用更簡潔方便。

requests 唯一的乙個非轉基因的 python http 庫,人類可以安全享用:)

requests 繼承了urllib2的所有特性。requests支援http連線保持和連線池,支援使用cookie保持會話,支援檔案上傳,支援自動確定響應內容的編碼,支援國際化的 url 和 post 資料自動編碼。

requests的文件非常完備,中文文件也相當不錯。requests能完全滿足當前網路的需求,支援python 2.6—3.5,而且能在python下完美執行。

安裝方式

利用 pip 安裝 或者利用 easy_install 都可以完成安裝:

$ pip install requests

$ easy_install requests

基本get請求(headers引數 和 parmas引數)

最基本的get請求可以直接用get方法

import requests

response = requests.get("")

# 也可以這麼寫

# response = requests.request("get", "")

print

(response)

新增 headers 和 查詢引數

如果想新增 headers,可以傳入headers引數來增加請求頭中的headers資訊。如果要將引數放在url中傳遞,可以利用 params 引數。

import requests

kw =

headers =

# params 接收乙個字典或者字串的查詢引數,字典型別自動轉換為url編碼,不需要urlencode()

response = requests.get(

"s?"

, params = kw, headers = headers)

# 檢視響應內容,response.text 返回的是unicode格式的資料

print

(response.text)

# 檢視響應內容,response.content返回的位元組流資料

print

(response.content)

print

(response.content.decode(

"utf-8"))

# 檢視完整url位址

print

(response.url)

# 檢視響應頭部字元編碼

print

(response.encoding)

# 檢視響應碼

print

(response.status_code)

使用response.text 時,requests 會基於 http 響應的文字編碼自動解碼響應內容,大多數 unicode 字符集都能被無縫地解碼。

使用response.content 時,返回的是伺服器響應資料的原始二進位制位元組流,可以用來儲存等二進位制檔案。

基本post請求(data引數)

對於 post 請求來說,我們一般需要為它增加一些引數。那麼最基本的傳參方法可以利用 data 這個引數。

import requests

data =

url =

""headers=

response = requests.post(url, data = data, headers = headers)

print

(response.text)

# 如果是json檔案可以直接顯示

print

(response.json(

))

執行結果:

[,][,]

**(proxies引數)

如果需要使用**,你可以通過為任意請求方法提供 proxies 引數來配置單個請求:

import requests

# 根據協議型別,選擇不同的**

proxies =

response = requests.get(

"", proxies = proxies)

print

(response.text)

私密**驗證(特定格式) 和 web客戶端驗證(auth 引數)

urllib.request 這裡的做法比較複雜,requests只需要一步:

import requests

# 如果**需要使用http basic auth,可以使用下面這種格式:

proxy =

response = requests.get(

"", proxies = proxy)

print

(response.text)

web客戶端驗證

如果是web客戶端驗證,需要新增 auth = (賬戶名, 密碼)

import requests

auth =

('test'

,'123456')

response = requests.get(

'', auth=auth)

print

(response.text)

cookies 和 sission

cookies

如果乙個響應中包含了cookie,那麼我們可以利用 cookies引數拿到:

import requests

response = requests.get(

"")# 7. 返回cookiejar物件:

cookiejar = response.cookies

# 8. 將cookiejar轉為字典:

cookiedict = requests.utils.dict_from_cookiejar(cookiejar)

print

(cookiejar)

print

(cookiedict)

sission

在 requests 裡,session物件是乙個非常常用的物件,這個物件代表一次使用者會話:從客戶端瀏覽器連線伺服器開始,到客戶端瀏覽器與伺服器斷開。

會話能讓我們在跨請求時候保持某些引數,比如在同乙個 session 例項發出的所有請求之間保持 cookie 。

實現人人網登入

import requests

# 1. 建立session物件,可以儲存cookie值

ssion = requests.session(

)# 2. 處理 headers

headers =

# 3. 需要登入的使用者名稱和密碼

data =

# 4. 傳送附帶使用者名稱和密碼的請求,並獲取登入後的cookie值,儲存在ssion裡

ssion.post(

"", data=data)

# 5. ssion包含使用者登入後的cookie值,可以直接訪問那些登入後才可以訪問的頁面

response = ssion.get(

"")# 6. 列印響應內容

print

(response.text)

處理https請求ssl證書驗證

要想檢查某個主機的ssl證書,你可以使用 verify 引數(也可以不寫)

import requests

response = requests.get(

"", verify=

true

)# 也可以省略不寫

# response = requests.get("")

print

(response.text)

Python之requests的安裝

在 windows 系統下,只需要輸入命令 pip install requests 即可安裝。在 linux 系統下,只需要輸入命令 sudo pip install requests 即可安裝。注 關於python第三方庫的安裝最好少使用 easy install,因為 easy install...

Python之requests的安裝

在 windows 系統下,只需要輸入命令 pip install requests 即可安裝。在 linux 系統下,只需要輸入命令 sudo pip install requests 即可安裝。注 關於python第三方庫的安裝最好少使用 easy install,因為 easy install...

Python之requests的安裝

在 windows 系統下,只需要輸入命令 pip install requests 即可安裝。在 linux 系統下,只需要輸入命令 sudo pip install requests 即可安裝。注 關於python第三方庫的安裝最好少使用 easy install,因為 easy install...