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

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


咨詢(xún)
建站咨詢(xún)
