目录
json和dictrequests.post()post请求中json和data的区别json和dict
python中的dict类型要转换为json格式的数据需要用到json库:
import json= json.dumps( ) = json.loads( )
需要注意的是:
python中并没有json类型这一说法,通过json.dumps(
(资料图片仅供参考)
>>> j = json.dumps() >>> type(j)
虽说json格式的数据在python中是以字符串的类型存在的,但是通过str(
>>> 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(
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 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 2亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 3现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 4如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 5AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 6转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 7充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 8好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 9名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 10亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战