W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
通常我們會選擇使用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 方法如下表:
方法 | 描述 |
---|---|
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', '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)
# 導入 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>
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: