新聞中心
Python requests 模塊
Python requests 是一個常用的 HTTP 請求庫,可以方便地向網(wǎng)站發(fā)送 HTTP 請求,并獲取響應結(jié)果。

網(wǎng)站建設哪家好,找成都創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序定制開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了寒亭免費建站歡迎大家使用!
requests 模塊比 模塊更簡潔。
使用 requests 發(fā)送 HTTP 請求需要先導入 requests 模塊:
import requests
導入后就可以發(fā)送 HTTP 請求,使用 requests 提供的方法向指定 URL 發(fā)送 HTTP 請求,例如:
實例
# 導入 requests 包
import requests
# 發(fā)送請求
x
= requests.
get
(
'https://www.runoob.com/'
)
# 返回網(wǎng)頁內(nèi)容
print
(x.
text
)
每次調(diào)用 requests 請求之后,會返回一個 response 對象,該對象包含了具體的響應信息,如狀態(tài)碼、響應頭、響應內(nèi)容等:
print(response.status_code) # 獲取響應狀態(tài)碼 print(response.headers) # 獲取響應頭 print(response.content) # 獲取響應內(nèi)容
更多響應信息如下:
| 屬性或方法 | 說明 |
|---|---|
| apparent_encoding | 編碼方式 |
| close() | 關(guān)閉與服務器的連接 |
| content | 返回響應的內(nèi)容,以字節(jié)為單位 |
| cookies | 返回一個 CookieJar 對象,包含了從服務器發(fā)回的 cookie |
| elapsed | 返回一個 timedelta 對象,包含了從發(fā)送請求到響應到達之間經(jīng)過的時間量,可以用于測試響應速度。比如 r.elapsed.microseconds 表示響應到達需要多少微秒。 |
| encoding | 解碼 r.text 的編碼方式 |
| headers | 返回響應頭,字典格式 |
| history | 返回包含請求歷史的響應對象列表(url) |
| is_permanent_redirect | 如果響應是永久重定向的 url,則返回 True,否則返回 False |
| is_redirect | 如果響應被重定向,則返回 True,否則返回 False |
| iter_content() | 迭代響應 |
| iter_lines() | 迭代響應的行 |
| json() | 返回結(jié)果的 JSON 對象 (結(jié)果需要以 JSON 格式編寫的,否則會引發(fā)錯誤) |
| links | 返回響應的解析頭鏈接 |
| next | 返回重定向鏈中下一個請求的 PreparedRequest 對象 |
| ok | 檢查 "status_code" 的值,如果小于400,則返回 True,如果不小于 400,則返回 False |
| raise_for_status() | 如果發(fā)生錯誤,方法返回一個 HTTPError 對象 |
| reason | 響應狀態(tài)的描述,比如 "Not Found" 或 "OK" |
| request | 返回請求此響應的請求對象 |
| status_code | 返回 http 的狀態(tài)碼,比如 404 和 200(200 是 OK,404 是 Not Found) |
| text | 返回響應的內(nèi)容,unicode 類型數(shù)據(jù) |
| url | 返回響應的 URL |
實例
# 導入 requests 包
import requests
# 發(fā)送請求
x
= requests.
get
(
'https://www.runoob.com/'
)
# 返回 http 的狀態(tài)碼
print
(x.
status_code
)
# 響應狀態(tài)的描述
print
(x.
reason
)
# 返回編碼
print
(x.
apparent_encoding
)
輸出結(jié)果如下:
200 OK utf-8
請求 json 數(shù)據(jù)文件,返回 json 內(nèi)容:
實例
# 導入 requests 包
import requests
# 發(fā)送請求
x
= requests.
get
(
'https://www.runoob.com/try/ajax/json_demo.json'
)
# 返回 json 數(shù)據(jù)
print
(x.
json
(
)
)
輸出結(jié)果如下:
{'name': '網(wǎng)站', 'num': 3, 'sites': [{'name': 'Google', 'info': ['Android', 'Google 搜索', 'Google 翻譯']}, {'name': 'Runoob', 'info': ['菜鳥教程', '菜鳥工具', '菜鳥微信']}, {'name': 'Taobao', 'info': ['淘寶', '網(wǎng)購']}]}
requests 方法
requests 方法如下表:
| 方法 | 描述 |
|---|---|
| delete(url, args) | 發(fā)送 DELETE 請求到指定 url |
| get(url, params, args) | 發(fā)送 GET 請求到指定 url |
| head(url, args) | 發(fā)送 HEAD 請求到指定 url |
| patch(url, data, args) | 發(fā)送 PATCH 請求到指定 url |
| post(url, data, json, args) | 發(fā)送 POST 請求到指定 url |
| put(url, data, args) | 發(fā)送 PUT 請求到指定 url |
| request(method, url, args) | 向指定的 url 發(fā)送指定的請求方法 |
使用 requests.request() 發(fā)送 get 請求:
實例
# 導入 requests 包
import requests
# 發(fā)送請求
x
= requests.
request
(
'get'
,
'https://www.runoob.com/'
)
# 返回網(wǎng)頁內(nèi)容
print
(x.
status_code
)
輸出結(jié)果如下:
200
設置請求頭:
實例
# 導入 requests 包
import requests
kw
=
{
's':
'python 教程'
}
# 設置請求頭
headers
=
{
"User-Agent":
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
}
# params 接收一個字典或者字符串的查詢參數(shù),字典類型自動轉(zhuǎn)換為url編碼,不需要urlencode()
response
= requests.
get
(
"https://www.runoob.com/"
, params
= kw
, headers
= headers
)
# 查看響應狀態(tài)碼
print
(response.
status_code
)
# 查看響應頭部字符編碼
print
(response.
encoding
)
# 查看完整url地址
print
(response.
url
)
# 查看響應內(nèi)容,response.text 返回的是Unicode格式的數(shù)據(jù)
print
(response.
text
)
輸出結(jié)果如下:
200 UTF-8 https://www.runoob.com/?s=python+%E6%95%99%E7%A8%8B ... 其他內(nèi)容...
post() 方法可以發(fā)送 POST 請求到指定 url,一般格式如下:
requests.post(url, data={key: value}, json={key: value}, args)
-
url 請求 url。
-
data 參數(shù)為要發(fā)送到指定 url 的字典、元組列表、字節(jié)或文件對象。
-
json 參數(shù)為要發(fā)送到指定 url 的 JSON 對象。
-
args 為其他參數(shù),比如 cookies、headers、verify等。
實例
# 導入 requests 包
import requests
# 發(fā)送請求
x
= requests.
post
(
'https://www.runoob.com/try/ajax/demo_post.php'
)
# 返回網(wǎng)頁內(nèi)容
print
(x.
text
)
輸出結(jié)果如下:
本內(nèi)容是使用 POST 方法請求的。
請求時間: 2022-05-26 17:30:47
post 請求帶參數(shù):
實例
# 導入 requests 包
import requests
# 表單參數(shù),參數(shù)名為 fname 和 lname
myobj
=
{
'fname':
'RUNOOB'
,
'lname':
'Boy'
}
# 發(fā)送請求
x
= requests.
post
(
'https://www.runoob.com/try/ajax/demo_post2.php'
, data
= myobj
)
# 返回網(wǎng)頁內(nèi)容
print
(x.
text
)
輸出結(jié)果如下:
你好,RUNOOB Boy,今天過得怎么樣?
附加請求參數(shù)
發(fā)送請求我們可以在請求中附加額外的參數(shù),例如請求頭、查詢參數(shù)、請求體等,例如:
headers = {'User-Agent': 'Mozilla/5.0'} # 設置請求頭
params = {'key1': 'value1', 'key2': 'value2'} # 設置查詢參數(shù)
data = {'username': 'example', 'password': '123456'} # 設置請求體
response = requests.post('https://www.runoob.com', headers=headers, params=params, data=data)上述代碼發(fā)送一個 POST 請求,并附加了請求頭、查詢參數(shù)和請求體。
除了基本的 GET 和 POST 請求外,requests 還支持其他 HTTP 方法,如 PUT、DELETE、HEAD、OPTIONS 等。
分享標題:Pythonrequests模塊
當前地址:http://www.dlmjj.cn/article/cdedees.html


咨詢
建站咨詢
