Python3 requests 模塊

2023-04-14 16:00 更新

通常我們會選擇使用request模塊來發(fā) 送 HTTP 請求。

因為requests 模塊比 urllib 模塊更簡潔。

但requests模塊并不是python內(nèi)置的標準庫,我們需要使用pip命令來安裝這個模塊!

pip install requests

request的使用相比于urllib簡潔了很多,如下所示:

# 導入 requests 包
import requests

# 發(fā)送請求
x = requests.get('http://hgci.cn/')

# 返回網(wǎng)頁內(nèi)容
print(x.text)

每次調(diào)用 requests 請求之后,會返回一個 response 對象,該對象包含了具體的響應信息。

響應信息如下:

屬性或方法 說明
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('http://hgci.cn/')

# 返回 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('http://hgci.cn/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': 'w3cschool', 'info': ['編程獅', '編程獅工具', '編程獅微信']}, {'name': 'Taobao', 'info': ['淘寶', '網(wǎng)購']}]}

requests 方法

requests 方法如下表:

方法 描述
delete(urlargs) 發(fā)送 DELETE 請求到指定 url
get(urlparams, args) 發(fā)送 GET 請求到指定 url
head(urlargs) 發(fā)送 HEAD 請求到指定 url
patch(urldata, args) 發(fā)送 PATCH 請求到指定 url
post(urldata, json, args) 發(fā)送 POST 請求到指定 url
put(urldata, args) 發(fā)送 PUT 請求到指定 url
request(methodurlargs) 向指定的 url 發(fā)送指定的請求方法

使用 requests.request() 發(fā)送 get 請求:

# 導入 requests 包
import requests

# 發(fā)送請求
x = requests.request('get', 'http://hgci.cn/')

# 返回網(wǎng)頁內(nèi)容
print(x.status_code)

輸出結(jié)果如下:

200

設(shè)置請求頭:

# 導入 requests 包
import requests

 
kw = {'w':'python 教程'}

# 設(shè)置請求頭
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("http://hgci.cn/search/", 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
http://hgci.cn/search/?w=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('http://hgci.cn/try/ajax/demo_post.php')

# 返回網(wǎng)頁內(nèi)容
print(x.text)

輸出結(jié)果如下:

<p style='color:red;'>本內(nèi)容是使用 POST 方法請求的。</p><p style='color:red;'>請求時間:
2022-05-26 17:30:47</p>

post 請求帶參數(shù):

# 導入 requests 包
import requests

# 表單參數(shù),參數(shù)名為 fname 和 lname
myobj = {'fname': 'w3cschool','lname': 'Boy'}

# 發(fā)送請求
x = requests.post('http://hgci.cn/try/ajax/demo_post2.php', data = myobj)

# 返回網(wǎng)頁內(nèi)容
print(x.text)

輸出結(jié)果如下:

<p style='color:red;'>你好,w3cschool Boy,今天過得怎么樣?</p>


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號