Python requests.post()方法中data和json参数的使用方法

 更新时间:2022年08月28日 10:05:20   作者:liyinchi1988  
这篇文章主要介绍了Python requests.post()方法中data和json参数的使用方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以参考一下

json和dict

python中的dict类型要转换为json格式的数据需要用到json库:

import json 
<json> = json.dumps(<dict>)

<dict> = json.loads(<json>)

需要注意的是:

python中并没有json类型这一说法,通过json.dumps(<dict>)转换的字典对象,最后得到的是一个字符串对象,在python中json格式的数据实际上就是一个字符串。

>>> j = json.dumps(<dict>)
>>> type(j)
<class 'str'>

虽说json格式的数据在python中是以字符串的类型存在的,但是通过str(<dict>)工厂函数所得到的结果同json.dumps(<dict>)方法所得到的结果是不相同的

>>> d = {'a': 1, 'b': 2}
>>> d_d = {"a": 1, "b": 2}
>>> string = str(d)
>>> string_d = str(d_d)
>>> js = json.dumps(d)
>>> js_d = json.dumps(d_d)
>>> string == string_d
True
>>> js = js_d
True
>>> string == js
False
>>> string
"{'a': 1, 'b': 2}"
>>> js
'{"a": 1, "b": 2}'

可以看出string和js的区别在于引号

对于可以作为json.loads(<str>)参数对象的字符串,除了要满足字典类型的格式外,所有的字符串对象必须是双引号。

requests.post()

在通过requests.post()进行POST请求时,传入报文的参数有两个,一个是data,一个是json

常见的form表单可以直接使用data参数进行报文提交,而data的对象则是python中的字典类型;

在爬虫的过程中遇到了一种payload报文,是一种json格式的报文,因此传入的报文对象也应该是格式的;

这里有两种方法进行报文提交:

import requests
import json 
url = "http://example.com"
data = {
    'a': 1,
 
    'b': 2,
 
}
# 1
requests.post(url, data=json.dumps(data))
# 2-json参数会自动将字典类型的对象转换为json格式
requests.post(url, json=data)

其它:

在requests.get()方法,中可以使用params参数来构建url

请求得到的结果可能呈现乱码的状态,可以通过resp.encoding属性查看网页编码方式,同时可以在获取resp.text之前对resp.encoding='utf-8'赋值,这样再次获取的resp.text则会使用我们要求的编码方式。

post请求中json和data的区别

post请求中,可以使用data传递参数,也可以使用json传递参数

两种方式有什么区别?

如果参数为JSON数据,可以直接传入json参数,它将自动编码并将Content-Type的置为application/json

payload = {'key1': 'value1', 'key2': 'value2'} 
 
r = requests.post("https://httpbin.org/post", json=payload)
print(r.text)

如果data传递的参数为字符串,如:json.dumps(payload),则request对参数进行url编码,Content-Type的值为None,所以data传字符串时,一定要在header中指定Content-Type

payload = {'key1': 'value1', 'key2': 'value2'}
 
headers={"Content-Type": "application/json"}
r = requests.post("https://httpbin.org/post", headers=headers,data=json.dumps(payload))
print(r.text)

如果data传递的是字典、元组组成的列表或列表作为值的字典,则request对参数进行url编码,Content-Type的值为application/x-www-form-urlencoded

# 字典
payload1 = {'key1': 'value1', 'key2': 'value2'}  
r = requests.post("https://httpbin.org/post", data=payload1)
# 元组组成的列表
payload2 = [('key1', 'value1'), ('key1', 'value2')]  
r = requests.post("https://httpbin.org/post", data=payload2)
 
# 列表作为值的字典
payload3 = {'key1': ['value1', 'value2']} 
r = requests.post("https://httpbin.org/post", data=payload3)

到此这篇关于Python requests.post()方法中data和json参数的使用方法的文章就介绍到这了,更多相关Python requests.post 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python tkiner实现 一个小小的图片翻页功能的示例代码

    python tkiner实现 一个小小的图片翻页功能的示例代码

    这篇文章主要介绍了python tkiner实现 一个小小的图片翻页功能,需要的朋友可以参考下
    2020-06-06
  • python读取Kafka实例

    python读取Kafka实例

    今天小编就为大家分享一篇python读取Kafka实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • Python 概率生成问题案例详解

    Python 概率生成问题案例详解

    这篇文章主要介绍了Python 概率生成问题案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Python中比较大小的几种方法实例总结

    Python中比较大小的几种方法实例总结

    在Python编程中经常需要比较两个数的值,并根据大小关系进行赋值操作,下面这篇文章主要给大家介绍了关于Python中比较大小的几种方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-03-03
  • Python调用C++,通过Pybind11制作Python接口

    Python调用C++,通过Pybind11制作Python接口

    今天小编就为大家分享一篇关于Python调用C++,通过Pybind11制作Python接口,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • conda创建环境过程出现"Solving environment: failed"报错的详细解决方法

    conda创建环境过程出现"Solving environment: failed"报错的详细解

    很长一段时间没用conda了,然后突然使用conda创建环境报错,所以下面这篇文章主要给大家介绍了关于conda创建环境过程出现"Solving environment: failed"报错的详细解决方法,需要的朋友可以参考下
    2022-11-11
  • Python pyecharts Line折线图的具体实现

    Python pyecharts Line折线图的具体实现

    折线图在很多图标中都有使用,本文主要介绍了Python pyecharts Line折线图的具体实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • 3个 Python 编程技巧

    3个 Python 编程技巧

    这篇文章主要介绍 Python 编程技巧,我们知道,字典的本质是哈希表,本身是无法排序的,但 Python 3.6 之后,字典是可以按照插入的顺序进行遍历的,这就是有序字典,其中的原理,可以阅读为什么 Python3.6 之后字典是有序的。本文也会介绍该内容,需要的朋友可以参考一下
    2021-10-10
  • 通过案例解析python鸭子类型相关原理

    通过案例解析python鸭子类型相关原理

    这篇文章主要介绍了通过案例解析python鸭子类型相关原理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • python使用心得之获得github代码库列表

    python使用心得之获得github代码库列表

    最近接了个项目,要求获得github的repo的api,度娘了一下,有不少文章介绍,总结了本文,分享给大家并附上代码
    2014-06-06

最新评论