您的位置: 网站首页> requests爬虫> 当前文章
requests之post字符串、json数据及含中文字符处理
老董-我爱我家房产SEO2021-11-11199围观,108赞
HTTP协议中没有规定post提交数据必须使用什么数据格式,服务端根据请求头中的Content-Type字段来获取提交方式然后对数据进行解析。在html中的form表单中enctype属性有3种设置方式:
<form action="url地址" enctype="application/x-www-form-urlencoded" method="POST"> <form action="url地址" enctype="multipart/form-data" method="POST"> 上传文件的设置 <form action="url地址" enctype="text/plain" method="POST">
很多时候想要post发送的数据并非编码为表单形式的,而是传递一个string而不是1个字典,其中json字符串最为常见。提交json串可以有2种方式实现
1)data参数传递json字符串
2)json参数直接传递字典,它会被自动编码,在请求头中也不用显式声明 这是 2.4.2 版的新加功能。
# -*- coding: utf-8 -*- import json url = 'https://api.github.com/some/endpoint' key_value = {'some': 'data'} r = requests.post(url, data=json.dumps(key_value),headers={'Content-Type':'application/json'}) # 或者 r = requests.post(url, json=key_value)
有时候想要post发送的数据是一个普通的string。比如百度站长平台主动推送url的示例就是如此,要post的数据就是1个个的url字符串:
json串本质也是一个字符串,在requests推送普通字符串的方法和上述推送json串的方式并无差别。
# -*- coding: utf-8 -*- url = 'http://data.zz.baidu.com/urls?site=https://xxx&token=xxx' string = 'http://www.python66.com' r = requests.post(url, data=string)
post数据存在中文的坑:
如果推送的字符串里含有中文,有时候post提交的时候会报错,此时可以把字符串encode为字节数据再进行推送。
url = 'http://data.zz.baidu.com/urls?site=https://xxx&token=xxx' string = 'http://www.123.com/老董笔记/' byte_string = string.encode('utf-8') r = requests.post(url, data=byte_string)
很赞哦!
python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群
相关文章
文章评论
-
requests之post字符串、json数据及含中文字符处理文章写得不错,值得赞赏
站点信息
- 网站程序:Laravel
- 客服微信:a772483200