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

这篇具有很好参考价值的文章主要介绍了【python】(十九)python常用第三方库——urllib3。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


1. urllib3 概述

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

Urllib3是一个功能强大,条理清晰,用于HTTP客户端的Python库,许多Python的原生系统已经开始使用urllib3。Urllib3提供了很多python标准库里所没有的重要特性:

  • 线程安全
  • 连接池管理
  • 客户端 SSL/TLS 验证
  • 支持 HTTP 和 SOCKS 代理
  • ……

2. urllib3 安装

通过 pip 安装

pip install urllib3

3. urllib3 发送 HTTP 请求

  • 导入 urllib3 模块
  • 创建 PoolManager 实例
  • 调用 request() 方法
import urllib3

def test_HTTP():
    # 创建连接池对象,默认会校验证书
    pm = urllib3.PoolManager()
    # 发送HTTP请求
    res = pm.request(method='GET', url="http://httpbin.org/robots.txt")
    print(type(res))
"""
打印结果:
<class 'urllib3.response.HTTPResponse'>
"""

4. urllib3 HTTPResponse 对象

  • status 属性
  • headers 属性
  • data 属性

import urllib3

def test_response():
    # 创建连接池对象
    pm = urllib3.PoolManager()
    # 发送请求
    resp = pm.request(method='GET', url="http://httpbin.org/ip")

    print(resp.status)  # 查看响应状态状态码
    print(resp.headers)  # 查看响应头信息
    print(resp.data)  # 查看响应原始二进制信息

5. urllib3 解析响应内容

  • 二进制响应内容解码
  • JSON 字符串
import urllib3
import json

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

    # 获取二进制形式的响应内容
    raw = resp.data
    print(type(raw), raw)
    # 使用utf-8解码成字符串
    content = raw.decode('utf-8')
    print(type(content), content)
    # 将JSON字符串解析成字典对象
    dict_obj = json.loads(content)
    print(type(dict_obj), dict_obj)
    print(dict_obj['origin'])

6. urllib3 request 请求参数

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

  • 必填

    • method:请求方式
    • url:请求地址
  • 选填

    • headers:请求头信息
    • fields:请求体数据
    • body:指定请求体类型
    • tiemout:设置超时时间

7. urllib3 定制请求数据

7.1. 定制请求头信息

  • 使用 headers 参数
import urllib3
import json

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

    # 定制请求头
    headers = {'School': 'hogwarts'}
    resp = pm.request('GET', url, headers=headers)

7.2. 定制查询字符串参数

  • fields 参数:适用于GET, HEAD, DELETE 请求
  • 拼接url:适用于POST, PUT请求
import urllib3
import json

# GET/HEAD/DELETE 请求
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 请求
def test_urlencode():
   # 从内置库urllib的parse模块导入编码方法
    from urllib.parse import urlencode
    pm = urllib3.PoolManager()
    url = "http://httpbin.org/post"
    # POST和PUT请求需要编码后拼接到URL中
    encoded_str = urlencode({'school': 'hogwarts'})
    resp = pm.request('POST', url=url+"?"+encoded_str)

7.3. 提交 form 表单数据

  • 类型 'Content-Type': 'multipart/form-data
  • 请求方式:POST、PUT
import urllib3
import json

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

    # fields数据会自动转成form格式提交
    resp = pm.request('POST', url, fields=fields)

7.4. 提交 JSON 格式数据

  • 类型:'Content-Type': 'application/json'
  • 请求方式:POST、PUT
import urllib3
import json

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

    # 设定请求体数据类型
    headers={'Content-Type': 'application/json'}

    # JSON文本数据
    json_str = json.dumps({'school': 'hogwarts'})
    resp = pm.request('POST', url, headers=headers, body=json_str)

7.5. timeout :设置超时时间

  • 时间单位:秒
  • 值的格式:float 类型
import urllib3


def test_timeout():
    pm = urllib3.PoolManager()
    # 访问这个地址,服务器会在3秒后响应
    url = "http://httpbin.org/delay/3"

    # 设置超时时长
    resp = pm.request(method='GET', url=url, timeout=4.0)
    assert resp.status == 200

8. urllib3 发送 HTTPS 请求

  • HTTPS 请求默认需要校验证书

  • PoolManager 的 cert_reqs 参数文章来源地址https://www.toymoban.com/news/detail-648784.html

    • "CERT_REQUIRED":需要校验
    • "CERT_NONE":取消校验
import urllib3
import json

def test_HTTPS():
    # 创建不校验证书的连接池对象
    pm_https = urllib3.PoolManager(cert_reqs="CERT_NONE")
    url = "https://httpbin.ceshiren.com/get"

    # 发送HTTPS请求
    resp = pm_https.request(method='GET', url=url)
    print(json.dumps(resp.data.decode('utf-8')))

到了这里,关于【python】(十九)python常用第三方库——urllib3的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Swift常用的第三方库

    以下是一些常用的Swift第三方库及其链接: Alamofire:用于网络请求的库。https://github.com/Alamofire/Alamofire Kingfisher:用于异步下载和缓存图片的库。https://github.com/onevcat/Kingfisher SwiftyJSON:用于处理JSON数据的库。https://github.com/SwiftyJSON/SwiftyJSON Realm:一个移动数据库。https://github.

    2024年04月28日
    浏览(36)
  • JMeter进阶-常用第三方插件讲解

    JMeter进阶-常用第三方插件讲解

    准备工作: 1.最新版本的JMeter是默认不展示插件管理器的,所以我们需要手动添加插件管理器 2.下载地址:https://jmeter-plugins.org/install/Install/,下载插件plugins-manager.jar,然后将jar包放在apache-jmeter-x.x.xlibext路径下,重新打开jmeter客户端即可在“选项”下面可以看到了Plugins-Ma

    2023年04月08日
    浏览(8)
  • SpringBoot集成常用第三方框架-RabbitMQ

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

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年01月17日
    浏览(39)
  • SpringBoot集成常用第三方框架-ES

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

    作者主页:编程指南针 作者简介:Java领域优质创作者、CSDN博客专家 、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、腾讯课堂常驻讲师 主要内容:Java项目、Python项目、前端项目、人工智能与大数据、简历模板、学习资料、面试题库

    2024年02月03日
    浏览(41)
  • Java调用第三方http接口的常用方式

    前言 一、通过JDK网络类Java.net.HttpURLConnection 二、通过apache common封装好的HttpClient 三、通过Spring的RestTemplate 总结 今天项目需要接口互相调用,就看了一下这几个调用的方式 通过java.net包下的原生java.api提供的http请求 使用步骤: 通过统一的资源定位器(java.net.URL)获取连接器(java.

    2024年02月08日
    浏览(11)
  • Android常用的第三方库--.jar、.aar

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

    JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文 件。JAR是 Java 的一种文档格式,是一种与平台无关的文件格式,可将多个文件合成一个文件。只包含了class文件与清单文件 , 不包含资源文件,如图片等所有res中的文件 。 JAR的优

    2024年02月03日
    浏览(12)
  • Python第三方库安装教程、什么是第三方库

    Python有一个全球社区:https://pypi.org/,在这里我们可以搜索任何主题的Python第三方库。PyPI全称是Python Package Index,指的是Python包的索引,它由PSF(Python Software Foundation)来维护,并且展示全球Python计算生态。 我们需要学会利用PyPI的主站检索,找到我们使用和关心的Python第三方

    2024年02月03日
    浏览(41)
  • Python第三方库安装——使用vscode、pycharm安装Python第三方库

    Python第三方库安装——使用vscode、pycharm安装Python第三方库

    在这里介绍vscode、Pycharm安装python第三方库的方法。 操作系统:windows10 专业版 环境如下: Pycharm Comunity 2022.3 Visual Studio Code 2019 Python 3.8 pip:23.0.1 pycharm是一款很强大的、专用于写python的ide。 小白式安装第三方库往往能给初学者一种 “高级感” ,而对于使用惯了Linux的人而言

    2024年02月03日
    浏览(49)
  • 超全整理,Jmeter性能测试-常用Jmeter第三方插件详解(超细)

    超全整理,Jmeter性能测试-常用Jmeter第三方插件详解(超细)

    Jmeter作为一个开源的接口性能测试工具,其本身的小巧和灵活性给了测试人员很大的帮助,但其本身作为一个开源工具,相比于一些商业工具(比如LoadRunner),在功能的全面性上就稍显不足。但其实也差不多。 Jmeter的第三方插件jmeter-plugins.org和其中常用的几种插件使用方法

    2024年02月14日
    浏览(37)
  • Python第三方库批量下载到本地,并离线批量安装第三方库

    Python第三方库批量下载到本地,并离线批量安装第三方库

    鉴于公司内网安装的python版本为python3.6.5,而此时又需要安装第三方库pytest,本来是想直接在Python官网PyPI直接搜对应可匹配跑python3.6.5版本的pytest进行下载然后传到内网安装即可,但是发现pytest依赖别的第三方库,根据报错装了几个依赖的第三方库之后,发现还是一堆的问题

    2024年02月07日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包