Python使用urllib和requests發(fā)送HTTP請求的方法詳解
本文介紹了Python中發(fā)送HTTP請求的兩種方法:內(nèi)置的urllib庫和第三方requests庫。urllib提供基礎(chǔ)功能,而requests庫更簡單強大,支持GET/POST請求、參數(shù)傳遞、請求頭設(shè)置等功能。
本文通過天氣API示例演示了實際應(yīng)用,并提供了超時設(shè)置、錯誤處理和JSON解析等實用技巧。推薦大多數(shù)場景使用requests庫,同時強調(diào)了異常處理的重要性。這些方法為獲取網(wǎng)絡(luò)數(shù)據(jù)和與Web服務(wù)交互提供了基礎(chǔ)工具。
想象一下,你想要從網(wǎng)上獲取一些信息——比如今天的天氣、最新的新聞或者一張圖片。這就像給網(wǎng)站寫一封信,然后等待回信。Python就是你的貼心郵差,幫你輕松完成這個收發(fā)過程。
最簡單的方式:使用urllib(Python內(nèi)置)
Python自帶了一個叫urllib的庫,就像你手機里自帶的短信應(yīng)用,不需要額外安裝。
import urllib.request
# 發(fā)送一個簡單的GET請求
response = urllib.request.urlopen('https://www.example.com')
print(response.read().decode('utf-8')) # 讀取并解碼響應(yīng)內(nèi)容
推薦方式:使用requests庫(更簡單強大)
雖然Python自帶工具,但requests庫就像一款智能郵件應(yīng)用,讓一切變得更加簡單直觀。
第一步:安裝requests
pip install requests
第二步:發(fā)送各種類型的請求
import requests
# 1. 簡單的GET請求(獲取信息)
response = requests.get('https://api.github.com')
print(f"狀態(tài)碼: {response.status_code}") # 200表示成功
print(response.text) # 獲取網(wǎng)頁內(nèi)容
# 2. 帶參數(shù)的GET請求(像在搜索框里輸入內(nèi)容)
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)
print(response.url) # 查看實際請求的URL
# 3. POST請求(提交信息,像填寫表單)
data = {'username': 'user', 'password': 'pass'}
response = requests.post('https://httpbin.org/post', data=data)
print(response.json()) # 以JSON格式查看響應(yīng)
# 4. 自定義請求頭(像添加特別說明)
headers = {'User-Agent': 'My-Python-App/1.0'}
response = requests.get('https://httpbin.org/user-agent', headers=headers)
print(response.text)
實際應(yīng)用示例:獲取天氣信息
import requests
def get_weather(city):
# 使用一個免費的天氣API(實際使用需要申請API密鑰)
api_key = "你的API密鑰"
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={api_key}"
try:
response = requests.get(url, timeout=5) # 5秒超時
response.raise_for_status() # 如果請求失敗會拋出異常
weather_data = response.json()
print(f"{city}的天氣: {weather_data['weather'][0]['description']}")
print(f"溫度: {weather_data['main']['temp']}K")
except requests.exceptions.RequestException as e:
print(f"獲取天氣信息失敗: {e}")
# 使用函數(shù)
get_weather('Beijing')
小貼士和注意事項
超時設(shè)置:總是設(shè)置合理的超時時間,避免程序卡死
requests.get(url, timeout=5)
錯誤處理:使用try-except塊捕獲可能的異常
try:
response = requests.get(url)
response.raise_for_status()
except requests.exceptions.RequestException as e:
print(f"請求出錯: {e}")
JSON處理:現(xiàn)代API大多返回JSON格式,requests可以直接解析
data = response.json()
總結(jié)
- 簡單需求:使用Python內(nèi)置的urllib
- 大多數(shù)情況:使用requests庫,它更簡單、更強大
- 記住設(shè)置超時和處理異常
- 現(xiàn)代Web API大多使用JSON格式,requests可以輕松處理
現(xiàn)在你已經(jīng)掌握了用Python發(fā)送HTTP請求的基本方法!就像學(xué)會了寫電子郵件一樣,你可以開始探索互聯(lián)網(wǎng)上的各種數(shù)據(jù)和服務(wù)了。
到此這篇關(guān)于Python使用urllib和requests發(fā)送HTTP請求的方法詳解的文章就介紹到這了,更多相關(guān)Python發(fā)送HTTP請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python之Matplotlib繪圖調(diào)節(jié)清晰度解決方案
Matplotlib是一個Python的繪圖庫,可以用來繪制各種類型的圖表,包括線圖、散點圖、柱狀圖等等,這篇文章主要給大家介紹了關(guān)于Python之Matplotlib繪圖調(diào)節(jié)清晰度的相關(guān)資料,需要的朋友可以參考下2024-03-03
Python自動化測試ConfigParser模塊讀寫配置文件
本文主要介紹Python自動化測試,這里詳細說明了ConfigParser模塊讀寫配置文件,有興趣的小伙伴可以參考下2016-08-08
Python實現(xiàn)求取表格文件某個區(qū)域內(nèi)單元格的最大值
這篇文章主要介紹基于Python語言,基于Excel表格文件內(nèi)某一列的數(shù)據(jù),計算這一列數(shù)據(jù)在每一個指定數(shù)量的行的范圍內(nèi)(例如每一個4行的范圍內(nèi))的區(qū)間最大值的方法,需要的朋友可以參考下2023-08-08
Python批量替換多個Word文檔的多個關(guān)鍵字的方法
有時,我們手頭上有多個Excel或者Word文件,但是領(lǐng)導(dǎo)突然要求對某幾個術(shù)語進行批量的修改,你是不是有要崩潰的感覺,所以本文給大家介紹了Python批量替換多個文檔的多個關(guān)鍵字的方法,需要的朋友可以參考下2025-08-08
python基于FTP實現(xiàn)文件傳輸相關(guān)功能代碼實例
這篇文章主要介紹了python基于FTP實現(xiàn)文件傳輸相關(guān)功能代碼實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09

