国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【python】(十九)python常用第三方庫——urllib3

這篇具有很好參考價(jià)值的文章主要介紹了【python】(十九)python常用第三方庫——urllib3。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


1. urllib3 概述

官方文檔:https://urllib3.readthedocs.io/en/stable/

Urllib3是一個(gè)功能強(qiáng)大,條理清晰,用于HTTP客戶端的Python庫,許多Python的原生系統(tǒng)已經(jīng)開始使用urllib3。Urllib3提供了很多python標(biāo)準(zhǔn)庫里所沒有的重要特性:

  • 線程安全
  • 連接池管理
  • 客戶端 SSL/TLS 驗(yàn)證
  • 支持 HTTP 和 SOCKS 代理
  • ……

2. urllib3 安裝

通過 pip 安裝

pip install urllib3

3. urllib3 發(fā)送 HTTP 請(qǐng)求

  • 導(dǎo)入 urllib3 模塊
  • 創(chuàng)建 PoolManager 實(shí)例
  • 調(diào)用 request() 方法
import urllib3

def test_HTTP():
    # 創(chuàng)建連接池對(duì)象,默認(rèn)會(huì)校驗(yàn)證書
    pm = urllib3.PoolManager()
    # 發(fā)送HTTP請(qǐng)求
    res = pm.request(method='GET', url="http://httpbin.org/robots.txt")
    print(type(res))
"""
打印結(jié)果:
<class 'urllib3.response.HTTPResponse'>
"""

4. urllib3 HTTPResponse 對(duì)象

  • status 屬性
  • headers 屬性
  • data 屬性

import urllib3

def test_response():
    # 創(chuàng)建連接池對(duì)象
    pm = urllib3.PoolManager()
    # 發(fā)送請(qǐng)求
    resp = pm.request(method='GET', url="http://httpbin.org/ip")

    print(resp.status)  # 查看響應(yīng)狀態(tài)狀態(tài)碼
    print(resp.headers)  # 查看響應(yīng)頭信息
    print(resp.data)  # 查看響應(yīng)原始二進(jìn)制信息

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

  • 二進(jìn)制響應(yīng)內(nèi)容解碼
  • JSON 字符串
import urllib3
import json

def test_response():
    pm = urllib3.PoolManager()
    resp = pm.request(method='GET', url="http://httpbin.org/ip")

    # 獲取二進(jìn)制形式的響應(yīng)內(nèi)容
    raw = resp.data
    print(type(raw), raw)
    # 使用utf-8解碼成字符串
    content = raw.decode('utf-8')
    print(type(content), content)
    # 將JSON字符串解析成字典對(duì)象
    dict_obj = json.loads(content)
    print(type(dict_obj), dict_obj)
    print(dict_obj['origin'])

6. urllib3 request 請(qǐng)求參數(shù)

  • 語法:request(method, url, fields, headers, **)

  • 必填

    • method:請(qǐng)求方式
    • url:請(qǐng)求地址
  • 選填

    • headers:請(qǐng)求頭信息
    • fields:請(qǐng)求體數(shù)據(jù)
    • body:指定請(qǐng)求體類型
    • tiemout:設(shè)置超時(shí)時(shí)間

7. urllib3 定制請(qǐng)求數(shù)據(jù)

7.1. 定制請(qǐng)求頭信息

  • 使用 headers 參數(shù)
import urllib3
import json

def test_headers():
    pm = urllib3.PoolManager()
    url = "http://httpbin.org/get"

    # 定制請(qǐng)求頭
    headers = {'School': 'hogwarts'}
    resp = pm.request('GET', url, headers=headers)

7.2. 定制查詢字符串參數(shù)

  • fields 參數(shù):適用于GET, HEAD, DELETE 請(qǐng)求
  • 拼接url:適用于POST, PUT請(qǐng)求
import urllib3
import json

# GET/HEAD/DELETE 請(qǐng)求
def test_fields():
    pm = urllib3.PoolManager()
    url = "http://httpbin.org/get"
    fields = {'school': 'hogwarts'}
    resp = pm.request(method='GET', url=url, fields=fields)

# POST/PUT 請(qǐng)求
def test_urlencode():
   # 從內(nèi)置庫urllib的parse模塊導(dǎo)入編碼方法
    from urllib.parse import urlencode
    pm = urllib3.PoolManager()
    url = "http://httpbin.org/post"
    # POST和PUT請(qǐng)求需要編碼后拼接到URL中
    encoded_str = urlencode({'school': 'hogwarts'})
    resp = pm.request('POST', url=url+"?"+encoded_str)

7.3. 提交 form 表單數(shù)據(jù)

  • 類型 'Content-Type': 'multipart/form-data
  • 請(qǐng)求方式:POST、PUT
import urllib3
import json

# POST/PUT 請(qǐng)求
def test_form():
    pm = urllib3.PoolManager()
    url = "http://httpbin.org/post"
    fields = {'school': 'hogwarts'}

    # fields數(shù)據(jù)會(huì)自動(dòng)轉(zhuǎn)成form格式提交
    resp = pm.request('POST', url, fields=fields)

7.4. 提交 JSON 格式數(shù)據(jù)

  • 類型:'Content-Type': 'application/json'
  • 請(qǐng)求方式:POST、PUT
import urllib3
import json

def test_json():
    pm = urllib3.PoolManager()
    url = "http://httpbin.org/post"

    # 設(shè)定請(qǐng)求體數(shù)據(jù)類型
    headers={'Content-Type': 'application/json'}

    # JSON文本數(shù)據(jù)
    json_str = json.dumps({'school': 'hogwarts'})
    resp = pm.request('POST', url, headers=headers, body=json_str)

7.5. timeout :設(shè)置超時(shí)時(shí)間

  • 時(shí)間單位:秒
  • 值的格式:float 類型
import urllib3


def test_timeout():
    pm = urllib3.PoolManager()
    # 訪問這個(gè)地址,服務(wù)器會(huì)在3秒后響應(yīng)
    url = "http://httpbin.org/delay/3"

    # 設(shè)置超時(shí)時(shí)長
    resp = pm.request(method='GET', url=url, timeout=4.0)
    assert resp.status == 200

8. urllib3 發(fā)送 HTTPS 請(qǐng)求

  • HTTPS 請(qǐng)求默認(rèn)需要校驗(yàn)證書

  • PoolManager 的 cert_reqs 參數(shù)文章來源地址http://www.zghlxwxcb.cn/news/detail-648784.html

    • "CERT_REQUIRED":需要校驗(yàn)
    • "CERT_NONE":取消校驗(yàn)
import urllib3
import json

def test_HTTPS():
    # 創(chuàng)建不校驗(yàn)證書的連接池對(duì)象
    pm_https = urllib3.PoolManager(cert_reqs="CERT_NONE")
    url = "https://httpbin.ceshiren.com/get"

    # 發(fā)送HTTPS請(qǐng)求
    resp = pm_https.request(method='GET', url=url)
    print(json.dumps(resp.data.decode('utf-8')))

到了這里,關(guān)于【python】(十九)python常用第三方庫——urllib3的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Swift常用的第三方庫

    以下是一些常用的Swift第三方庫及其鏈接: Alamofire:用于網(wǎng)絡(luò)請(qǐng)求的庫。https://github.com/Alamofire/Alamofire Kingfisher:用于異步下載和緩存圖片的庫。https://github.com/onevcat/Kingfisher SwiftyJSON:用于處理JSON數(shù)據(jù)的庫。https://github.com/SwiftyJSON/SwiftyJSON Realm:一個(gè)移動(dòng)數(shù)據(jù)庫。https://github.

    2024年04月28日
    瀏覽(97)
  • JMeter進(jìn)階-常用第三方插件講解

    JMeter進(jìn)階-常用第三方插件講解

    準(zhǔn)備工作: 1.最新版本的JMeter是默認(rèn)不展示插件管理器的,所以我們需要手動(dòng)添加插件管理器 2.下載地址:https://jmeter-plugins.org/install/Install/,下載插件plugins-manager.jar,然后將jar包放在apache-jmeter-x.x.xlibext路徑下,重新打開jmeter客戶端即可在“選項(xiàng)”下面可以看到了Plugins-Ma

    2023年04月08日
    瀏覽(19)
  • SpringBoot集成常用第三方框架-RabbitMQ

    SpringBoot集成常用第三方框架-RabbitMQ

    作者主頁:編程指南針 作者簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家 、CSDN內(nèi)容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構(gòu)師設(shè)計(jì)經(jīng)驗(yàn)、騰訊課堂常駐講師 主要內(nèi)容:Java項(xiàng)目、Python項(xiàng)目、前端項(xiàng)目、人工智能與大數(shù)據(jù)、簡歷模板、學(xué)習(xí)資料、面試題庫

    2024年01月17日
    瀏覽(90)
  • SpringBoot集成常用第三方框架-ES

    SpringBoot集成常用第三方框架-ES

    作者主頁:編程指南針 作者簡介:Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者、CSDN博客專家 、CSDN內(nèi)容合伙人、掘金特邀作者、阿里云博客專家、51CTO特邀作者、多年架構(gòu)師設(shè)計(jì)經(jīng)驗(yàn)、騰訊課堂常駐講師 主要內(nèi)容:Java項(xiàng)目、Python項(xiàng)目、前端項(xiàng)目、人工智能與大數(shù)據(jù)、簡歷模板、學(xué)習(xí)資料、面試題庫

    2024年02月03日
    瀏覽(96)
  • Java調(diào)用第三方http接口的常用方式

    前言 一、通過JDK網(wǎng)絡(luò)類Java.net.HttpURLConnection 二、通過apache common封裝好的HttpClient 三、通過Spring的RestTemplate 總結(jié) 今天項(xiàng)目需要接口互相調(diào)用,就看了一下這幾個(gè)調(diào)用的方式 通過java.net包下的原生java.api提供的http請(qǐng)求 使用步驟: 通過統(tǒng)一的資源定位器(java.net.URL)獲取連接器(java.

    2024年02月08日
    瀏覽(21)
  • Android常用的第三方庫--.jar、.aar

    Android常用的第三方庫--.jar、.aar

    JAR(Java Archive,Java 歸檔文件)是與平臺(tái)無關(guān)的文件格式,它允許將許多文件組合成一個(gè)壓縮文 件。JAR是 Java 的一種文檔格式,是一種與平臺(tái)無關(guān)的文件格式,可將多個(gè)文件合成一個(gè)文件。只包含了class文件與清單文件 , 不包含資源文件,如圖片等所有res中的文件 。 JAR的優(yōu)

    2024年02月03日
    瀏覽(32)
  • Python第三方庫安裝教程、什么是第三方庫

    Python有一個(gè)全球社區(qū):https://pypi.org/,在這里我們可以搜索任何主題的Python第三方庫。PyPI全稱是Python Package Index,指的是Python包的索引,它由PSF(Python Software Foundation)來維護(hù),并且展示全球Python計(jì)算生態(tài)。 我們需要學(xué)會(huì)利用PyPI的主站檢索,找到我們使用和關(guān)心的Python第三方

    2024年02月03日
    瀏覽(94)
  • Python第三方庫安裝——使用vscode、pycharm安裝Python第三方庫

    Python第三方庫安裝——使用vscode、pycharm安裝Python第三方庫

    在這里介紹vscode、Pycharm安裝python第三方庫的方法。 操作系統(tǒng):windows10 專業(yè)版 環(huán)境如下: Pycharm Comunity 2022.3 Visual Studio Code 2019 Python 3.8 pip:23.0.1 pycharm是一款很強(qiáng)大的、專用于寫python的ide。 小白式安裝第三方庫往往能給初學(xué)者一種 “高級(jí)感” ,而對(duì)于使用慣了Linux的人而言

    2024年02月03日
    瀏覽(118)
  • 超全整理,Jmeter性能測試-常用Jmeter第三方插件詳解(超細(xì))

    超全整理,Jmeter性能測試-常用Jmeter第三方插件詳解(超細(xì))

    Jmeter作為一個(gè)開源的接口性能測試工具,其本身的小巧和靈活性給了測試人員很大的幫助,但其本身作為一個(gè)開源工具,相比于一些商業(yè)工具(比如LoadRunner),在功能的全面性上就稍顯不足。但其實(shí)也差不多。 Jmeter的第三方插件jmeter-plugins.org和其中常用的幾種插件使用方法

    2024年02月14日
    瀏覽(95)
  • Python第三方庫批量下載到本地,并離線批量安裝第三方庫

    Python第三方庫批量下載到本地,并離線批量安裝第三方庫

    鑒于公司內(nèi)網(wǎng)安裝的python版本為python3.6.5,而此時(shí)又需要安裝第三方庫pytest,本來是想直接在Python官網(wǎng)PyPI直接搜對(duì)應(yīng)可匹配跑python3.6.5版本的pytest進(jìn)行下載然后傳到內(nèi)網(wǎng)安裝即可,但是發(fā)現(xiàn)pytest依賴別的第三方庫,根據(jù)報(bào)錯(cuò)裝了幾個(gè)依賴的第三方庫之后,發(fā)現(xiàn)還是一堆的問題

    2024年02月07日
    瀏覽(104)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包