最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python requests庫輕松發(fā)送HTTP請求的終極指南

 更新時間:2025年08月04日 08:22:25   作者:Python_trys  
在現(xiàn)代網(wǎng)絡(luò)編程中,HTTP請求是與Web服務(wù)交互的基礎(chǔ),本文將全面介紹requests庫的使用方法,從基礎(chǔ)請求到高級技巧,幫助你掌握網(wǎng)絡(luò)數(shù)據(jù)交互的核心技能

前言

在現(xiàn)代網(wǎng)絡(luò)編程中,HTTP請求是與Web服務(wù)交互的基礎(chǔ)。Python中的requests庫以其簡潔優(yōu)雅的API設(shè)計,成為開發(fā)者發(fā)送HTTP請求的首選工具。本文將全面介紹requests庫的使用方法,從基礎(chǔ)請求到高級技巧,幫助你掌握網(wǎng)絡(luò)數(shù)據(jù)交互的核心技能。

一、requests庫簡介

requests是一個基于Python開發(fā)的HTTP庫,比Python標準庫中的urllib更加簡單易用。它具有以下特點:

人性化的API設(shè)計

支持連接保持和連接池

支持文件上傳

自動內(nèi)容解碼

國際化域名和URL

自動實現(xiàn)持久連接

安裝requests

pip install requests

二、發(fā)送基本HTTP請求

1.GET請求

GET是最常用的HTTP方法,用于從服務(wù)器獲取資源。

import requests

# 基本GET請求
response = requests.get('https://www.example.com')

# 打印響應(yīng)狀態(tài)碼
print(response.status_code)

# 打印響應(yīng)內(nèi)容
print(response.text)

2.帶參數(shù)的GET請求

# 通過params參數(shù)傳遞查詢字符串
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)

# 實際請求的URL
print(response.url)  # 輸出: https://httpbin.org/get?key1=value1&key2=value2

3.POST請求

POST通常用于向服務(wù)器提交數(shù)據(jù)。

# 基本POST請求
data = {'key': 'value'}
response = requests.post('https://httpbin.org/post', data=data)

# 查看服務(wù)器返回的數(shù)據(jù)
print(response.json())

三、請求與響應(yīng)處理

1.響應(yīng)內(nèi)容解析

requests提供了多種方式訪問響應(yīng)內(nèi)容:

response = requests.get('https://www.example.com')

# 文本內(nèi)容
print(response.text)

# 二進制內(nèi)容
print(response.content)

# JSON響應(yīng)(自動解析)
print(response.json())

# 原始響應(yīng)(用于流式傳輸)
print(response.raw)

2.響應(yīng)狀態(tài)碼

response = requests.get('https://www.example.com')

# 狀態(tài)碼
print(response.status_code)

# 狀態(tài)碼是否成功(200-400范圍內(nèi))
print(response.ok)

# 拋出HTTP錯誤(如果請求失敗)
response.raise_for_status()

3.請求頭與響應(yīng)頭

# 自定義請求頭
headers = {
    'User-Agent': 'Mozilla/5.0',
    'Accept': 'application/json'
}
response = requests.get('https://www.example.com', headers=headers)

# 查看響應(yīng)頭
print(response.headers)

# 獲取特定響應(yīng)頭
print(response.headers['Content-Type'])

四、高級請求技巧

超時設(shè)置

# 設(shè)置超時時間(秒)
try:
    response = requests.get('https://www.example.com', timeout=3)
except requests.exceptions.Timeout:
    print("請求超時")

會話對象(Session)

使用Session可以保持某些參數(shù)跨請求,并重用TCP連接,提高性能。

# 創(chuàng)建會話
session = requests.Session()

# 設(shè)置公共參數(shù)
session.headers.update({'User-Agent': 'MyApp/1.0'})

# 使用會話發(fā)送請求
response1 = session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
response2 = session.get('https://httpbin.org/cookies')

print(response2.json())  # 會顯示之前設(shè)置的cookie

代理設(shè)置

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

response = requests.get('https://www.example.com', proxies=proxies)

文件上傳

files = {'file': open('report.xls', 'rb')}
response = requests.post('https://httpbin.org/post', files=files)
print(response.text)

流式請求

對于大文件下載,可以使用流式請求:

response = requests.get('https://www.example.com/bigfile', stream=True)

with open('bigfile', 'wb') as fd:
    for chunk in response.iter_content(chunk_size=128):
        fd.write(chunk)

五、錯誤處理

requests提供了完善的異常處理機制:

from requests.exceptions import RequestException

try:
    response = requests.get('https://www.example.com', timeout=5)
    response.raise_for_status()  # 檢查請求是否成功
except RequestException as e:
    print(f"請求發(fā)生錯誤: {e}")

主要異常類型包括:

  • ConnectionError:網(wǎng)絡(luò)連接錯誤
  • Timeout:請求超時
  • TooManyRedirects:重定向過多
  • HTTPError:HTTP錯誤響應(yīng)
  • RequestException:所有requests異常的基類

六、實際應(yīng)用案例

調(diào)用REST API

# 獲取GitHub用戶信息
response = requests.get('https://api.github.com/users/octocat')

if response.status_code == 200:
    user_data = response.json()
    print(f"用戶名: {user_data['login']}")
    print(f"倉庫數(shù): {user_data['public_repos']}")
else:
    print(f"請求失敗,狀態(tài)碼: {response.status_code}")

網(wǎng)頁內(nèi)容抓取

from bs4 import BeautifulSoup

response = requests.get('https://www.example.com')
soup = BeautifulSoup(response.text, 'html.parser')

# 提取所有鏈接
for link in soup.find_all('a'):
    print(link.get('href'))

下載文件

url = 'https://www.example.com/sample.pdf'
response = requests.get(url)

with open('sample.pdf', 'wb') as f:
    f.write(response.content)

七、性能優(yōu)化建議

使用Session對象:對于需要發(fā)送多個請求到同一主機的場景,使用Session可以顯著提高性能。

啟用連接池:requests默認使用連接池,確保在創(chuàng)建Session時保持默認設(shè)置。

設(shè)置合理的超時:避免請求長時間掛起,影響程序性能。

流式處理大響應(yīng):對于大文件下載,使用stream=True可以避免內(nèi)存問題。

合理設(shè)置請求頭:特別是Accept-Encoding可以啟用壓縮傳輸。

八、常見問題解答

Q1: 如何處理HTTPS證書驗證?

# 禁用證書驗證(不推薦生產(chǎn)環(huán)境使用)
response = requests.get('https://example.com', verify=False)

# 使用自定義CA證書
response = requests.get('https://example.com', verify='/path/to/cert.pem')

Q2: 如何處理重定向?

# 禁用重定向
response = requests.get('http://example.com', allow_redirects=False)

# 獲取重定向歷史
print(response.history)

Q3: 如何調(diào)試請求?

# 啟用詳細日志
import logging
import http.client

http.client.HTTPConnection.debuglevel = 1
logging.basicConfig()
logging.getLogger().setLevel(logging.DEBUG)
requests_log = logging.getLogger("requests.packages.urllib3")
requests_log.setLevel(logging.DEBUG)
requests_log.propagate = True

結(jié)語

requests庫以其簡潔的API和強大的功能,成為Python開發(fā)者處理HTTP請求的首選工具。通過本文的介紹,相信你已經(jīng)掌握了從基礎(chǔ)到高級的各種用法。在實際開發(fā)中,合理運用這些技巧可以大大提高開發(fā)效率和程序穩(wěn)定性。

到此這篇關(guān)于Python requests庫輕松發(fā)送HTTP請求的終極指南的文章就介紹到這了,更多相關(guān)Python requests發(fā)送HTTP請求內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python sys模塊sys.path使用方法示例

    python sys模塊sys.path使用方法示例

    這篇文章主要介紹了python sys模塊sys.path使用方法,大家參考使用
    2013-12-12
  • python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞

    python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞

    這篇文章主要介紹了python函數(shù)裝飾器構(gòu)造和參數(shù)傳遞,下面通過一個小案例來簡單的理解什么是裝飾器,需要的小伙伴可以參考一下
    2022-03-03
  • Python人工智能實戰(zhàn)之對話機器人的實現(xiàn)

    Python人工智能實戰(zhàn)之對話機器人的實現(xiàn)

    本文將通過Python開發(fā)一個可以講笑話的機器人,可以自由定制功能,想講幾個笑話就講幾個笑話。文中的示例代碼講解詳細,感興趣的可以動手試一試
    2022-02-02
  • 在Python中使用K-Means聚類和PCA主成分分析進行圖像壓縮

    在Python中使用K-Means聚類和PCA主成分分析進行圖像壓縮

    這篇文章主要介紹了在Python中使用K-Means聚類和PCA主成分分析進行圖像壓縮,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 圖文詳解牛頓迭代算法原理及Python實現(xiàn)

    圖文詳解牛頓迭代算法原理及Python實現(xiàn)

    牛頓迭代法又稱為牛頓-拉夫遜(拉弗森)方法,它是牛頓在17世紀提出的一種在實數(shù)域和復(fù)數(shù)域上近似求解方程的方法。本文將利用圖文詳解牛頓迭代算法原理及實現(xiàn),需要的可以參考一下
    2022-08-08
  • 在Python中存儲字符串

    在Python中存儲字符串

    這篇文章主要介紹了在Python中存儲字符串,文章通過unicode展開主題相關(guān)內(nèi)容,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-05-05
  • Python3從零開始搭建一個語音對話機器人的實現(xiàn)

    Python3從零開始搭建一個語音對話機器人的實現(xiàn)

    這篇文章主要介紹了Python3從零開始搭建一個語音對話機器人的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python定義函數(shù)實現(xiàn)累計求和操作

    Python定義函數(shù)實現(xiàn)累計求和操作

    這篇文章主要介紹了Python定義函數(shù)實現(xiàn)累計求和操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Python中的文件和目錄操作實現(xiàn)代碼

    Python中的文件和目錄操作實現(xiàn)代碼

    對于文件和目錄的處理,雖然可以通過操作系統(tǒng)命令來完成,但是Python語言為了便于開發(fā)人員以編程的方式處理相關(guān)工作,提供了許多處理文件和目錄的內(nèi)置函數(shù)。重要的是,這些函數(shù)無論是在Unix、Windows還是Macintosh平臺上,它們的使用方式是完全一致的。
    2011-03-03
  • Python生成藝術(shù)圖案實例代碼(分形、數(shù)學(xué)曲線)

    Python生成藝術(shù)圖案實例代碼(分形、數(shù)學(xué)曲線)

    這篇文章主要介紹了Python生成藝術(shù)圖案(分形、數(shù)學(xué)曲線)的相關(guān)資料,主要講解如何用Python的matplotlib和numpy庫繪制分形與數(shù)學(xué)曲線,涵蓋曼德勃羅集、科赫雪花、心形線等經(jīng)典圖形,需要的朋友可以參考下
    2025-08-08

最新評論

罗江县| 乌兰浩特市| 苍南县| 济宁市| 乐业县| 乐安县| 沾化县| 溧阳市| 合阳县| 平安县| 陇南市| 宝坻区| 闵行区| 涿鹿县| 乐山市| 抚远县| 得荣县| 蒙山县| 通州市| 古交市| 河源市| 邮箱| 瑞金市| 土默特左旗| 霸州市| 隆回县| 阿克陶县| 大庆市| 息烽县| 博湖县| 花垣县| 上蔡县| 承德市| 资溪县| 谢通门县| 册亨县| 梅河口市| 大渡口区| 晋城| 德格县| 微山县|