网站首页 > 技术文章 正文
前言
在运维过程中,我们可能需要通过某些http接口提交一些数据到我们的资产管理系统、监控系统等,我们可以使用python的第三方库requests来进行操作,优雅而简单。
安装
直接使用pip就可以安装:
pip install requests
使用
1、发送请求
import requests #导入requests,然后就可以为所欲为了
#发送get请求
r0 = requests.get("http://yunweicai.com")
#发送post请求
r1 = requests.post("http://yunweicai.com",data={key:value})
#发送post请求,带json串
json_data = {"user":"yunweicai","op":"post"}
r11 = requesets.post("http://yunweicai.com",json=json_data)
#put、delete、head、optiions请求也很简单
r = requests.put('http://yunweicai.com/put', data = {'key':'value'})
r = requests.delete('http://yunweicai.com/delete')
r = requests.head('http://yunweicai.com/get')
r = requests.options('http://yunweicai.com/get')
2、URL参数
URL 的查询字符串(query string)传递某种数据。如果你是手工构建 URL,那么数据会以键/值对的形式置于 URL 中,跟在一个问号的后面。例如, yunweicai.com/get?key=val。
requests库操作就比较优雅了,requests 允许你使用 params 关键字参数,以一个字符串字典来提供这些参数。
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://yunweicai.com/get", params=payload)
通过打印输出该 URL,你能看到 URL 已被正确编码:
print(r.url)
3、相应内容
通过发送请求返回的对象,我们就可以获取到服务器对我们的相应内容了。Requests 会自动解码来自服务器的内容。请求发出后,Requests 会基于 HTTP 头部对响应的编码作出有根据的推测。当你访问 r.text 之时,Requests 会使用其推测的文本编码。
你可以找出 Requests 使用了什么编码,并且能够使用 r.encoding 属性来改变它:
>>> r.encoding
'utf-8'
>>> r.encoding = 'ISO-8859-1'
如果返回的json串,可以直接使用r.json()获取到字典对象进行操作
如果响应内容是二进制呢?
对于响应内容是非文本请求,可以使用r.content访问到内容。
例如,以请求返回的二进制数据创建一张图片,你可以使用如下代码:
>>> from PIL import Image
>>> from io import BytesIO
>>> i = Image.open(BytesIO(r.content))
4、定制请求头
有些请求需要有指定的请求头才能正确获取到内容。
headers = {'user-agent': 'my-app/0.0.1'}
r= requests.get("http://yunweicai.com",headers=headers)
5、cookies
有些请求需要依赖于cookies来完成操作,就需要从上个请求中获取到cookies然后传入下一个请求:
r0 = requests.get("http://yunweicai.com/login")
r1 = requests.post("http://yunweicai.com/asset",data={"hostname":"yunweicai",cookies= r0.cookies}
总结
使用requests是不是觉得很简单而优雅呢?
人生苦短,我用Python!
猜你喜欢
- 2024-10-03 Python访问网络 urllib.request 发送HTTP 请求
- 2024-10-03 python模块之aioHttp 异步请求(在crm中,哪个模块用于跟踪和管理客户服务请求)
- 2024-10-03 推荐几个最佳python应用服务器(一起学习吧)
- 2024-10-03 让 HTTP 服务人类——Python Requests 模块基本用法总结
- 2024-10-03 关于爬虫,HTTP协议了解一下!(关于爬虫,http协议了解一下!正确的有)
- 2024-10-03 「Python」在HTTP请求使用长连接(keep-alive)提高传输效率
- 2024-10-03 干货分享丨Python的HTTP库及示例(http//www.python.org/downloads)
- 2024-10-03 微软太良心了,提供免费服务器可以搭建Python网站
- 2024-10-03 python爬虫必备库——requests(python爬虫需要的库)
- 2024-10-03 如何用Python语言开发大型服务器程序
- 10-02基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- 10-02Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- 10-02AWD-LSTM语言模型是如何实现的_lstm语言模型
- 10-02NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 10-02使用ONNX和Torchscript加快推理速度的测试
- 10-02tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- 10-02Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- 10-02Gateway_gateways
- 最近发表
-
- 基于深度学习的铸件缺陷检测_如何控制和检测铸件缺陷?有缺陷铸件如何处置?
- Linux Mint 22.1 Cinnamon Edition 搭建深度学习环境
- AWD-LSTM语言模型是如何实现的_lstm语言模型
- NVIDIA Jetson Nano 2GB 系列文章(53):TAO模型训练工具简介
- 使用ONNX和Torchscript加快推理速度的测试
- tensorflow GPU环境安装踩坑日记_tensorflow配置gpu环境
- Keye-VL-1.5-8B 快手 Keye-VL— 腾讯云两卡 32GB GPU保姆级部署指南
- Gateway_gateways
- Coze开源本地部署教程_开源canopen
- 扣子开源本地部署教程 丨Coze智能体小白喂饭级指南
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)