Python网络请求、JSON转换、多线程、异步IO

Python requests模块GET与POST请求实战:从基础到高级应用 HTTP协议是Web通信的基石,定义了客户端与服务器之间数据交换的格式与规则。其核心原理基于请求-响应模型,通过GET、POST等方法实现不同操作。理解HTTP协议对于网络编程至关重要,它能帮助开发者构建高效、可靠的网络应用。在Python生态中,requests库凭借其简洁的API和强大的功能,成为处理HTTP请求的首选工具,广泛应用于网络爬虫、API调用等场景。本文聚焦于requests库中GET与POST请求的深度应用,通过实战案例解析参数传递、会话管理、错误处理等关键技术细节,并探讨连接池、请求重试 阅读详情

在 Python 众多的 HTTP 客户端中,最有名的莫过于 、 和 。requestsaiohttphttpx

在不借助其他第三方库的情况下, 只能发送同步请求; 只能发送异步请求; 既能发送同步请求,又能发送异步请求。requestsaiohttphttpx

那么怎么选择呢

  • 只发同步请求用 ,但可配合多线程变异步。requests
  • 只发异步请求用 ,但可以配合await变同步。aiohttp
  • httpx可以发同步请求也可以异步,但是请求速度同步略差于 ,异步略差于requestsaiohttp

Asyncio 的强大。但是,任何一种方案都不是完美的,都存在一定的局限性,Asyncio 同样如此。

实际使用中,想用好 Asyncio,特别是发挥其强大的功能,很多情况下必须得有相应的 Python 库支持。

比如

requests 库并不兼容 Asyncio,而 aiohttp 库兼容。

请求

这里先说requests

安装依赖

<span style="color:#333333"><span style="background-color:#fefefe"><span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>pip</strong></span> install requests
</span></span></span></span>

响应

响应的类型

<span style="color:#333333"><span style="background-color:#fefefe"><span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#1f7199">#获取接口返回的字符串数据</span>
r.<span style="color:#333333"><strong>text</strong></span>

<span style="color:#1f7199">#获取接口返回的json数据,即直接将json格式的数据转换为json对象</span>
r.json()

<span style="color:#1f7199">#获取接口返回的二进制数据,假设二进制数据如果为图片可以继续转换成图片</span>
r.content

<span style="color:#1f7199">#获取原始套接字,使用r.raw请在 requests 请求中加上参数 stream=True</span>
r.raw
</span></span></span></span>

获取请求响应的其他信息

<span style="color:#333333"><span style="background-color:#fefefe"><span style="color:#444444"><span style="background-color:#f6f6f6">#获取状态码
<span style="color:#333333"><strong>r</strong></span><span style="color:#880000">.status_code</span>

#获取请求的<span style="color:#333333"><strong>url</strong></span>
<span style="color:#333333"><strong>r</strong></span><span style="color:#880000">.url</span>

#获取指定<span style="color:#333333"><strong>cookies</strong></span>信息
<span style="color:#333333"><strong>r</strong></span><span style="color:#880000">.cookies</span><span style="color:#bc6060">['token']</span>

#获取访问服务器返回给我们的响应头部信息
<span style="color:#333333"><strong>r</strong></span><span style="color:#880000">.headers</span>

#获取指定访问服务器返回给我们的响应头部信息
<span style="color:#333333"><strong>r</strong></span><span style="color:#880000">.headers</span><span style="color:#bc6060">['Content-Type']</span>

#获取发送到服务器的请求的头部的信息
<span style="color:#333333"><strong>r</strong></span><span style="color:#880000">.request</span><span style="color:#880000">.headers</span>
</span></span></span></span>

请求

获取请求

获取请求:

<span style="color:#333333"><span style="background-color:#fefefe"><span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>res</strong></span> = requests.<span style="color:#397300">get</span>(url,data=data,cookies=cookie,headers=header,verify=False,<span style="color:#333333"><strong>files</strong></span>=<span style="color:#333333"><strong>file</strong></span>)
</span></span></span></span>

data可传可不传,data是字典格式。

如果url是https的话,加上verify=False。如果url是http的话,可不加。

示例1

<span style="color:#333333"><span style="background-color:#fefefe"><span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>import</strong></span> requests

<span style="color:#333333"><strong>if</strong></span> __name__ == <span style="color:#880000">'__main__'</span>:
    r = requests.<span style="color:#333333"><strong>get</strong></span>(<span style="color:#880000">"https://www.psvmc.cn"</span>)
    <span style="color:#397300">print</span>(r.text)
</span></span></span></span>

示例2

<span style="color:#333333"><span style="background-color:#fefefe"><span style="color:#444444"><span style="background-color:#f6f6f6"><span style="color:#333333"><strong>import</strong></span> requests

<span style="color:#333333"><strong>if</strong></span> __name__ == <span style="color:#880000">'__main__'</span>:
    data = {<span style="color:#880000">'username'</span>: <span style="color:#880000">'admin'</span>, <span style="color:#880000">'passwd'</span>: <span style="color:#880000">'123456'</span>}
    r = requests.<span style="color:#333333"><strong>get</strong></span>(<span style="color:#880000">"https://www.psvmc.cn/login.json"</span>, params=data)
    <span style="color:#397300">print</span>(r.status_code)
    <span style="color:#397300">print</span>(r.json()[<span style="color:#880000">"obj"</span>])
</span></span></span></span>

POST请求

<span style="color:#333333"><span style="background-color:#fefefe"><span style="color:#444444"><span style="background-color:#f6f6f6">url_post = "https://www.psvmc.cn/login.json"

<span style="color:#888888">#不包含任何参数的请求</span>
r = requests.post(url_post)

<span style="colo
构建高并发AI数据管道:从异步IO到任务调度,实现千源并行处理 在AI工程实践中,高并发数据处理是连接海量数据源与智能模型的关键桥梁。其核心原理在于通过异步编程、消息队列和生产者-消费者模式,构建解耦、可扩展的数据摄取管道。这项技术的核心价值在于能极大提升数据吞吐效率,为实时分析、模型训练提供稳定、低延迟的数据供给。典型的应用场景包括多源资讯聚合、竞品监控和大规模数据预处理。本文聚焦于实现“千源并行阅读”能力,详细探讨了如何利用异步框架和任务调度器,解决异构数据源适配、资源限制和错误处理等工程挑战,为AI应用构建坚实的数据基础设施。 阅读详情

相关推荐

VC++ REST API开发实战:基于cpr库实现HTTP CRUD操作与JSON处理

HTTP协议作为现代网络通信的基石,其核心的GET、POST、PUT、DELETE方法构成了RESTful API的设计原则。理解这些方法的语义与幂等性是实现可靠客户端交互的关键。在C++工程实践中,选择合适的HTTP客户端库能极大提升开发效率与代码可维护性。cpr库作为libcurl的现代化C++封装,提供了直观的API与强大的功能,尤其适合在VC++环境中处理网络请求。通过封装统一的HttpClient类,开发者可以集中管理连接超时、错误处理与资源释放,有效避免常见的网络错误。结合nlohmann/js

weixin_30588675的博客 578

Python进行异步请求,实现多开任务

假设现在的需求更改了,需要你启动多任务脚本的时候,打开多个浏览器进行页面操作,换言之,就是启动多任务脚本的时候,类似selenium或者pyppeteer那样打开多个浏览器窗口进行页面操作,这个时候需要怎么办呢?运行之后,你会看到系统会自动打开3个浏览器窗口,如果你想打开更多,只需要设置你当前获取任务队列的数量即可,至于pyppeteer页面操作这里就不详述了,后面我会更新这一块领域的文章。怎么样,使用python创建异步请求,执行多开任务的方法,你get到了吗?启动多任务,去调用task.py脚本。

Python进阶专栏《爬虫实战进阶》,《Pyppeteer从入门到精通》原创作者 1346

WSL2网络配置全攻略:如何让Windows和Linux子系统互相访问端口(附防火墙设置)

本文深入解析WSL2的网络架构,并提供详细的端口互通配置指南。针对WSL2与Windows宿主机之间常见的网络访问问题,文章从原理出发,逐步讲解如何识别网络环境、配置Windows防火墙规则、调整服务监听地址,并介绍镜像网络模式等进阶优化方案,最终实现稳定可靠的双向端口访问。

sony5的博客 1148

Monocle2在R 4.3环境下的终极避坑指南:从安装到可视化全流程解析

本文提供了在R 4.3环境下安装和运行Monocle2的完整解决方案,重点解决了依赖包兼容性、源码修改及BEAM分析报错等关键问题。文章详细解析了从环境准备、依赖包处理、源码安装验证到从Seurat对象转换、拟时轨迹构建、高级可视化及性能优化的全流程,旨在帮助用户顺利完成单细胞拟时分析。

weixin_29206669的博客 1355

手把手教你学 AI芯片 SOC软件开发专栏简介

在AI芯片(如NPU、GPU加速器)爆发式增长的今天,软件栈开发已成为AI应用落地的核心瓶颈。无论是模型推理加速、低延迟部署,还是能效优化,都依赖于对芯片底层软件的深度掌握。然而,许多开发者困于“只会调用API,不懂驱动实现”的困境,导致性能瓶颈难以突破。本专栏《手把手教你学 AI芯片 SOC软件开发》专为AI工程师、嵌入式开发者及系统架构师打造,从零基础切入,系统拆解AI芯片SOC(System on Chip)的完整软件栈,覆盖Runtime(运行时)

MHD0815的博客 171

C#项目实战——YModem协议文件传输【实例】

1、先由上位机发送*update*的握手信号,下位机返回响应字符‘C’(字符C,ASII码为0x43),之后通信双方开始以YMODEM协议进行数据通信。2、 YMODEM协议格式说明(1)起始帧数据格式帧类型(1byte)帧序号帧序号反码传输的文件名文件大小数据CRCSOH00FFfilenamefileziseNULCRCSOH=0x01,表示这个数据帧中包含着128个字节的数据(STX表示1024字节,初始帧只有128个);00表示数据帧序号,初始是0,依次向下排。

做有价值的事,积累有价值的笔记! 3655

CS之攻击菜单详解-后门生成与上线

能够生成如HTA文档、office宏、payload生成器、exe程序。 windows可执行程序exe 可以看到能生成两种windows可执行程序,其分别代表stage分阶段和unstage(stageless)不分阶段。传送门 ——>Cobalt Strike中payload的stage与unstage区别 选择监听器后,按需生成不同类型的exe 然后在目标机器运行即可上线 payload生成器 选择生成如下类型的后门 ——>https://che...

渗透之路,攻防之间皆学问 6807

TMS320F28377D双核开发例程 - DSP开发

首先,我们需要创建一个新的工程来进行开发。然后,选择适当的目标设备为TMS320F28377D,并设置工程的名称和存储位置。在上面的代码中,我们定义了一个128个元素的输入数组和输出数组。然后,我们使用一个简单的数字信号处理算法,将输入数组中的每个元素平方,并将结果存储到输出数组中。这个芯片的双核架构提供了更高的计算能力和灵活性,使得数字信号处理的开发更加高效和可靠。希望本文对您有所帮助!当应用程序在TMS320F28377D芯片上运行时,它将对输入数组中的每个元素进行平方运算,并将结果打印出来。

IfllUnity的博客 2517

QCC305x-QCC304x系列开发教程之应用程序子系统详解 嵌入式

本文对QCC305x-QCC304x系列芯片的应用程序子系统进行了详细解析,并给出了一个LED闪烁的示例代码。嵌入式系统的开发既需要理论知识的支持,也需要实践经验的积累,希望本文能够为读者在QCC305x-QCC304x系列芯片的开发中提供一些有益的指导。QCC305x-QCC304x系列芯片提供了丰富的外设接口,包括UART、SPI、I2C等,开发者可以根据需求选择适合的接口进行数据传输和控制。QCC305x-QCC304x系列芯片的应用程序子系统是整个嵌入式系统的核心部分,负责管理和执行各种应用程序。

CodeMaven的博客 225

康耐视visionpro-CogBlobTool工具详细说明

康耐视visionpro-CogBlobTool工具详细说明

视觉人机器视觉的博客 1726

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 使用PyO3从Python调用 Rust:加速Python
下一篇: 5行Python代码就能让你的电脑 “永不息屏”?
Python_xiaowu
博客等级 码龄5年 3096粉丝 178原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值