程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python - 第三方HTTP庫Requests使用詳解1(安裝配置、基本用法)

編輯:Python

一、基本介紹

1,什麼是 Requests 庫?

(1) Requests 是用 python 語言基於 urllib 編寫的,采用的是 Apache2 Licensed 開源協議的 HTTP 庫。 (2) Requests 使用起來比 urllib 簡潔很多,可以說是目前 Python 實現的最簡單易用的 HTTP 庫。

2,Requests 庫功能特性

  • Keep-Alive & 連接池
  • 國際化域名和 URL
  • 帶持久 Cookie 的會話
  • 浏覽器式的 SSL 認證
  • 自動內容解碼
  • 基本/摘要式的身份認證
  • 優雅的 key/value Cookie
  • 自動解壓
  • Unicode 響應體
  • HTTP(S) 代理支持
  • 文件分塊上傳
  • 流下載
  • 連接超時
  • 分塊請求
  • 支持 .netrc

3,安裝 Requests 庫

(1)由於 Requests 是第三方庫,所以使用前需要在終端中執行如下命令通過 pip 安裝:
pip install requests

(2)由於我的 Mac 電腦又裝了最新的 Python 3.7 版本(別名 python3),其自帶了 pip,所以執行如下命令安裝:
python3 -m pip install requests

二、基本用法

1,發送請求

Requests 為我們提供了各種請求方式:
import requests
requests.get('https://api.github.com/events')
requests.post("http://httpbin.org/post")
requests.put("http://httpbin.org/put")
requests.delete("http://httpbin.org/delete")
requests.head("http://httpbin.org/get")
requests.options("http://httpbin.org/get")

2,傳遞參數

(1)如果需要傳遞參數的話,我們可以直接將參數拼接在  URL 後面:
requests.get('http://httpbin.org/get?name=hangge.com&age=100')

(2)也可以使用 params 關鍵字傳遞一個字典進來作為參數(參數最終同樣會自動拼接到 URL 後面):
import requests
data = {
"name": "hangge.com",
"age": 100
}
response = requests.post('http://httpbin.org/post', params=data)
print(response.text)

(3)如果使用 data 關鍵字傳遞一個字典進來作為參數,則會以表單的形式傳遞參數(參數不會拼接到 URL 後面):
import requests
data = {
"name": "hangge.com",
"age": 100
}
response = requests.post('http://httpbin.org/post', data=data)
print(response.text)

(4)有時我們想要發送的數據並不需要以表單形式提交。比如傳遞一個 string 類型的 JSON 串,可以使用 json 參數來傳遞:
import requests
data = {
"name": "hangge.com",
"age": 100
}
response = requests.post('http://httpbin.org/post', json=data)
print(response.text)

三、響應結果

1,獲取響應內容

(1)當使用 Requests 發起網絡請求時,會返回一個 Response 對象,我們可以通過它來獲取響應內容:
import requests
response = requests.get("https://www.baidu.com")
print("\n--- type(response) ---\n", type(response))
print("\n--- response.status_code ---\n", response.status_code) #響應狀態碼
print("\n--- response.cookies ---\n", response.cookies) #Cookie
print("\n--- type(response.text) ---\n", type(response.text))
print("\n--- response.text ---\n", response.text) #響應文本內容
print("\n--- response.content ---\n", response.content)

(2)很多情況下如果直接輸出  response.text 會出現亂碼的問題(見上圖),要解決這個問題有兩種辦法:
  • 一是使用 response.content 獲取二進制響應內容,然後通過 decode() 轉換為 utf-8。
import requests
response = requests.get("https://www.baidu.com")
print(response.content.decode("utf-8"))

  • 二是可以使用 response.encoding 屬性來指定使用的響應編碼:
import requests
response = requests.get("https://www.baidu.com")
response.encoding="utf-8"
print(response.text)

無論上面那種方式,可以看到亂碼問題都解決了:

2,JSON 響應內容

(1)如果請求返回的是 JSON 格式的數據,可以使用 Requests 內置的 JSON 解碼器,它可以幫助我們處理 JSON 數據:
import requests
response = requests.get('http://httpbin.org/get?name=hangge.com&age=100')
json = response.json()
print(json)
print(json['args']['name'])

(2)當然我們也可以使用 json.loads() 方法手動將 json 字符串轉換成 dict 字典,下面代碼的效果同上面是一樣的:
import requests
import json
response = requests.get("http://httpbin.org/get?name=hangge.com&age=100")
json = json.loads(response.text)
print(json)
print(json['args']['name'])

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved