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

Python中request庫的各種用法詳細(xì)解析

 更新時(shí)間:2024年10月16日 11:01:56   作者:需要重新演唱  
本文詳細(xì)介紹了Python的requests庫的安裝與使用,包括HTTP請(qǐng)求方法、請(qǐng)求頭、請(qǐng)求體的基本概念,以及發(fā)送GET和POST請(qǐng)求的基本用法,同時(shí),探討了會(huì)話對(duì)象、處理重定向、超時(shí)設(shè)置、代理支持等高級(jí)功能,幫助讀者更高效地處理復(fù)雜的HTTP請(qǐng)求場(chǎng)景,需要的朋友可以參考下

引言

在現(xiàn)代網(wǎng)絡(luò)應(yīng)用中,與服務(wù)器進(jìn)行通信是一個(gè)非?;A(chǔ)且重要的功能。Python的requests庫是一個(gè)非常強(qiáng)大且易于使用的HTTP庫,它允許我們發(fā)送HTTP請(qǐng)求,與Web服務(wù)進(jìn)行交互。本文將詳細(xì)介紹requests庫的使用,包括其基本概念、常用功能以及一些高級(jí)用法。

安裝requests庫

在使用requests庫之前,我們需要先安裝它??梢酝ㄟ^pip命令來安裝:

pip install requests

基本概念

HTTP請(qǐng)求方法

HTTP協(xié)議定義了幾種請(qǐng)求方法,最常見的有:

  • GET:從服務(wù)器獲取資源。
  • POST:向服務(wù)器提交數(shù)據(jù),通常用于創(chuàng)建新資源。
  • PUT:更新服務(wù)器上的資源。
  • DELETE:刪除服務(wù)器上的資源。

請(qǐng)求URL

URL(Uniform Resource Locator)是用于定位資源的字符串。例如:https://api.example.com/data

請(qǐng)求頭

請(qǐng)求頭(Headers)包含了關(guān)于請(qǐng)求的元數(shù)據(jù),例如內(nèi)容類型、用戶代理等。

請(qǐng)求體

請(qǐng)求體(Body)通常用于POST和PUT請(qǐng)求,包含要發(fā)送的數(shù)據(jù)。

基本用法

發(fā)送GET請(qǐng)求

發(fā)送GET請(qǐng)求是最簡(jiǎn)單的操作之一。以下是一個(gè)示例:

import requests

response = requests.get('https://api.github.com')
print(response.status_code)  # 打印狀態(tài)碼
print(response.text)         # 打印響應(yīng)內(nèi)容

發(fā)送POST請(qǐng)求

發(fā)送POST請(qǐng)求時(shí),通常需要傳遞一些數(shù)據(jù)。以下是一個(gè)示例:

import requests

url = 'https://httpbin.org/post'
data = {'key': 'value'}
response = requests.post(url, data=data)
print(response.status_code)  # 打印狀態(tài)碼
print(response.json())       # 打印JSON格式的響應(yīng)內(nèi)容

傳遞請(qǐng)求頭

有時(shí)我們需要在請(qǐng)求中添加自定義的請(qǐng)求頭。以下是一個(gè)示例:

import requests

url = 'https://api.github.com'
headers = {'User-Agent': 'my-app/0.0.1'}
response = requests.get(url, headers=headers)
print(response.status_code)  # 打印狀態(tài)碼
print(response.text)         # 打印響應(yīng)內(nèi)容

處理響應(yīng)

狀態(tài)碼

響應(yīng)的狀態(tài)碼表示請(qǐng)求的結(jié)果。常見的狀態(tài)碼有:

  • 200:請(qǐng)求成功。
  • 404:資源未找到。
  • 500:服務(wù)器內(nèi)部錯(cuò)誤。

響應(yīng)內(nèi)容

響應(yīng)內(nèi)容可以是文本、JSON、二進(jìn)制數(shù)據(jù)等。以下是一些示例:

import requests

response = requests.get('https://api.github.com')

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

# 獲取JSON內(nèi)容
print(response.json())

# 獲取二進(jìn)制內(nèi)容
print(response.content)

響應(yīng)頭

響應(yīng)頭包含了關(guān)于響應(yīng)的元數(shù)據(jù)。以下是一個(gè)示例:

import requests

response = requests.get('https://api.github.com')
print(response.headers)

高級(jí)用法詳解

在掌握了requests庫的基本用法之后,我們可以進(jìn)一步探索其高級(jí)功能。這些高級(jí)功能可以幫助我們更靈活、更高效地處理復(fù)雜的HTTP請(qǐng)求場(chǎng)景。以下是對(duì)高級(jí)用法的詳細(xì)說明。

1. 會(huì)話對(duì)象(Session Objects)

會(huì)話對(duì)象允許我們?cè)诙鄠€(gè)請(qǐng)求之間保持某些參數(shù),例如cookies、headers等。使用會(huì)話對(duì)象可以簡(jiǎn)化代碼,提高效率。

示例:

import requests

# 創(chuàng)建一個(gè)會(huì)話對(duì)象
session = requests.Session()

# 更新會(huì)話的默認(rèn)headers
session.headers.update({'User-Agent': 'my-app/0.0.1'})

# 發(fā)送第一個(gè)請(qǐng)求,設(shè)置一個(gè)cookie
response1 = session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
print(response1.text)

# 發(fā)送第二個(gè)請(qǐng)求,獲取之前設(shè)置的cookie
response2 = session.get('https://httpbin.org/cookies')
print(response2.text)

在這個(gè)示例中,我們創(chuàng)建了一個(gè)會(huì)話對(duì)象,并在多個(gè)請(qǐng)求之間共享了headers和cookies。這樣可以確保在多個(gè)請(qǐng)求之間保持一致的狀態(tài)。

2. 處理重定向(Handling Redirects)

默認(rèn)情況下,requests庫會(huì)自動(dòng)處理重定向。我們可以通過allow_redirects參數(shù)來控制是否允許重定向。

示例:

import requests

# 禁止重定向
response = requests.get('http://github.com', allow_redirects=False)
print(response.status_code)  # 打印狀態(tài)碼
print(response.headers['Location'])  # 打印重定向的URL

在這個(gè)示例中,我們發(fā)送了一個(gè)GET請(qǐng)求到http://github.com,并禁止了重定向。響應(yīng)的狀態(tài)碼為301,表示請(qǐng)求被永久重定向,響應(yīng)頭中的Location字段包含了重定向的目標(biāo)URL。

3. 超時(shí)設(shè)置(Timeout Settings)

在發(fā)送請(qǐng)求時(shí),我們可以設(shè)置超時(shí)時(shí)間,以避免長時(shí)間的等待。超時(shí)時(shí)間可以應(yīng)用于連接階段和讀取階段。

示例:

import requests
from requests.exceptions import Timeout

try:
    # 設(shè)置連接超時(shí)和讀取超時(shí)
    response = requests.get('https://httpbin.org/delay/10', timeout=(3, 5))
except Timeout:
    print('The request timed out')

在這個(gè)示例中,我們?cè)O(shè)置了一個(gè)3秒的連接超時(shí)和5秒的讀取超時(shí)。如果請(qǐng)求在3秒內(nèi)未能建立連接或在5秒內(nèi)未能讀取到響應(yīng)數(shù)據(jù),就會(huì)拋出Timeout異常。

4. 代理支持(Proxy Support)

requests庫支持通過代理發(fā)送請(qǐng)求。我們可以為不同的協(xié)議(HTTP、HTTPS)設(shè)置不同的代理。

示例:

import requests

# 設(shè)置代理
proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}

response = requests.get('https://httpbin.org/ip', proxies=proxies)
print(response.text)

在這個(gè)示例中,我們?yōu)镠TTP和HTTPS請(qǐng)求分別設(shè)置了代理。通過代理發(fā)送請(qǐng)求可以隱藏客戶端的真實(shí)IP地址,或者繞過某些網(wǎng)絡(luò)限制。

5. 文件上傳(File Uploads)

requests庫支持上傳文件。我們可以通過files參數(shù)來上傳文件。

示例:

import requests

# 準(zhǔn)備文件
files = {'file': open('report.xls', 'rb')}

# 上傳文件
response = requests.post('https://httpbin.org/post', files=files)
print(response.text)

在這個(gè)示例中,我們上傳了一個(gè)名為report.xls的文件。服務(wù)器會(huì)返回上傳文件的相關(guān)信息。

6. 流式請(qǐng)求(Streaming Requests)

對(duì)于大文件或需要實(shí)時(shí)處理的響應(yīng),我們可以使用流式請(qǐng)求。這樣可以避免一次性加載大量數(shù)據(jù)到內(nèi)存中。

示例:

import requests

# 流式請(qǐng)求
response = requests.get('https://httpbin.org/stream/20', stream=True)

# 逐行讀取響應(yīng)內(nèi)容
for line in response.iter_lines():
    if line:
        print(line)

在這個(gè)示例中,我們發(fā)送了一個(gè)流式請(qǐng)求,并逐行讀取響應(yīng)內(nèi)容。這樣可以有效地處理大文件或?qū)崟r(shí)數(shù)據(jù)流。

7. 自定義身份驗(yàn)證(Custom Authentication)

requests庫支持自定義身份驗(yàn)證。我們可以通過繼承requests.auth.AuthBase類來實(shí)現(xiàn)自定義的身份驗(yàn)證邏輯。

示例:

import requests
from requests.auth import AuthBase

# 自定義身份驗(yàn)證類
class TokenAuth(AuthBase):
    def __init__(self, token):
        self.token = token

    def __call__(self, r):
        r.headers['Authorization'] = f'Bearer {self.token}'
        return r

# 使用自定義身份驗(yàn)證發(fā)送請(qǐng)求
response = requests.get('https://httpbin.org/get', auth=TokenAuth('my-token'))
print(response.text)

在這個(gè)示例中,我們定義了一個(gè)名為TokenAuth的自定義身份驗(yàn)證類,并在發(fā)送請(qǐng)求時(shí)使用了這個(gè)類。這樣可以靈活地實(shí)現(xiàn)各種身份驗(yàn)證邏輯。

8. 處理Cookies

requests庫提供了方便的方法來處理Cookies。我們可以獲取、設(shè)置和刪除Cookies。

示例:

import requests

# 創(chuàng)建一個(gè)會(huì)話對(duì)象
session = requests.Session()

# 設(shè)置一個(gè)cookie
session.get('https://httpbin.org/cookies/set/sessioncookie/123456789')

# 獲取所有cookies
cookies = session.cookies
print(cookies)

# 刪除一個(gè)cookie
cookies.clear_expired_cookies()
print(cookies)

在這個(gè)示例中,我們通過會(huì)話對(duì)象設(shè)置了一個(gè)cookie,并獲取和刪除了cookies。這樣可以方便地管理會(huì)話狀態(tài)。

9. 處理SSL證書驗(yàn)證

requests庫默認(rèn)會(huì)驗(yàn)證SSL證書。我們可以通過verify參數(shù)來控制是否驗(yàn)證SSL證書。

示例:

import requests

# 禁用SSL證書驗(yàn)證
response = requests.get('https://httpbin.org', verify=False)
print(response.text)

在這個(gè)示例中,我們禁用了SSL證書驗(yàn)證。這樣可以方便地測(cè)試不安全的HTTPS站點(diǎn),但需要注意安全風(fēng)險(xiǎn)。

10. 自定義適配器(Custom Adapters)

requests庫允許我們自定義適配器,以實(shí)現(xiàn)更復(fù)雜的請(qǐng)求邏輯。我們可以通過繼承requests.adapters.HTTPAdapter類來實(shí)現(xiàn)自定義的適配器。

示例:

import requests
from requests.adapters import HTTPAdapter

# 自定義適配器
class MyAdapter(HTTPAdapter):
    def send(self, request, **kwargs):
        print(f'Sending request to {request.url}')
        return super().send(request, **kwargs)

# 創(chuàng)建一個(gè)會(huì)話對(duì)象,并使用自定義適配器
session = requests.Session()
session.mount('https://', MyAdapter())

# 發(fā)送請(qǐng)求
response = session.get('https://httpbin.org/get')
print(response.text)

在這個(gè)示例中,我們定義了一個(gè)名為MyAdapter的自定義適配器,并在會(huì)話對(duì)象中使用了這個(gè)適配器。這樣可以方便地實(shí)現(xiàn)自定義的請(qǐng)求邏輯。

總結(jié)

到此這篇關(guān)于Python中request庫的各種用法的文章就介紹到這了,更多相關(guān)Python request庫解析內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PyTorch權(quán)值初始化原理解析

    PyTorch權(quán)值初始化原理解析

    這篇文章主要為大家介紹了PyTorch權(quán)值初始化原理示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 基于PyQt5完成pdf轉(zhuǎn)word功能

    基于PyQt5完成pdf轉(zhuǎn)word功能

    本文介紹的pdf轉(zhuǎn)word功能還有一些待完善地方,例如可增加預(yù)覽功能,實(shí)現(xiàn)每頁預(yù)覽,當(dāng)然我們可以在后續(xù)階段逐漸完善,對(duì)基于PyQt5完成的pdf轉(zhuǎn)word功能感興趣的朋友一起看看吧
    2022-06-06
  • 如何用python插入獨(dú)創(chuàng)性聲明

    如何用python插入獨(dú)創(chuàng)性聲明

    這篇文章主要介紹了如何用python插入獨(dú)創(chuàng)性聲明,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下
    2021-03-03
  • python實(shí)現(xiàn)TCP服務(wù)器端與客戶端的方法詳解

    python實(shí)現(xiàn)TCP服務(wù)器端與客戶端的方法詳解

    這篇文章主要介紹了python實(shí)現(xiàn)TCP服務(wù)器端與客戶端的方法,以實(shí)例形式詳解分析了Python實(shí)現(xiàn)服務(wù)器端與客戶端的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-04-04
  • python中matplotlib的用法及繪制簡(jiǎn)單圖形詳解

    python中matplotlib的用法及繪制簡(jiǎn)單圖形詳解

    這篇文章主要給大家介紹了關(guān)于python中matplotlib的用法及繪制簡(jiǎn)單圖形的相關(guān)資料,matplotlib是python中用于繪制各種圖像的模塊,功能十分強(qiáng)大,通常與pandas模塊搭配使用,可以生成各種樣視的圖片,用于數(shù)據(jù)的分析和展示,需要的朋友可以參考下
    2024-03-03
  • pandas的drop_duplicates無法去重問題解決

    pandas的drop_duplicates無法去重問題解決

    在我們利用Pandas進(jìn)行數(shù)據(jù)清洗的時(shí)候,往往會(huì)用到drop_duplicates()進(jìn)行去重,本文主要介紹了pandas的drop_duplicates無法去重問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • python3+dlib實(shí)現(xiàn)人臉識(shí)別和情緒分析

    python3+dlib實(shí)現(xiàn)人臉識(shí)別和情緒分析

    本文通過具體代碼不步驟給大家詳細(xì)講述了python3+dlib實(shí)現(xiàn)人臉識(shí)別以及情緒分析的方法,有需要的朋友參考下。
    2018-04-04
  • 一篇文章帶你學(xué)習(xí)Python3的高級(jí)特性(2)

    一篇文章帶你學(xué)習(xí)Python3的高級(jí)特性(2)

    這篇文章主要為大家詳細(xì)介紹了Python3的高階函數(shù),主要介紹什么是高級(jí)特性,高級(jí)特性的用法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • python字典基本操作實(shí)例分析

    python字典基本操作實(shí)例分析

    這篇文章主要介紹了python字典基本操作,實(shí)例分析了Python的打印輸出、刪除、賦值等常用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • python的re正則表達(dá)式實(shí)例代碼

    python的re正則表達(dá)式實(shí)例代碼

    這篇文章主要介紹了python的re正則表達(dá)式,分享了一則re模塊實(shí)現(xiàn)的正則表達(dá)式實(shí)例代碼,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評(píng)論

阳春市| 新蔡县| 璧山县| 蕉岭县| 兰溪市| 镇原县| 卓尼县| 资溪县| 兴义市| 永嘉县| 务川| 江都市| 保康县| 牟定县| 盖州市| 京山县| 泰安市| 茶陵县| 洪江市| 紫金县| 蒙城县| 师宗县| 思茅市| 黄石市| 浮梁县| 海伦市| 平顺县| 太白县| 浦城县| 宾川县| 龙南县| 通渭县| 建阳市| 陆河县| 阿勒泰市| 钟祥市| 荃湾区| 南乐县| 教育| 大石桥市| 黑水县|