请教python requests.post()请求一个第三方接口的问题返回中文乱码的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教python requests.post()请求一个第三方接口的问题返回中文乱码的问题相关的知识,希望对你有一定的参考价值。
请教python采集 requests.post()请求一个第三方接口的问题,返回的中文是乱码,编辑器,头部都已经加了utf8编码,怎么都不行,有大神吗指点一下,高分感谢,可以私信我
需要一个转码和解码,因为文件内部编码不同,所以输出来是乱码。代码如下:txt=requests.post(url)
mytxt=txt.text.encode('iso-8859-1').decode('utf-8') 参考技术A 有没有其他工具抓到了正确现实的中文(比如curl,postman),也就是说首先排除服务器端的问题。追问
这是测试的快手站,您可以看下快手接口的请求方式,他需要传值的,我用php没有拿到数据所以采用Python了,用Python拿评论接口数据出现了乱码问题,基本上评论接口20次能有一次是正常的中文,其他都是乱码,其他视频接口返回数据没问题
追答那肯定是需要认值了,对不对
可以共享下相关账号和文档来测试调试
随便打开快手一个短视频,然后滑动右侧评论,就会出来相应的接口,您可以试试获取到的接口返回数据
,header头信息,cookie,query都可以拿出来临时用,
你大概写下你如何打印返回结果的。贴代码
POST 请求文件 python-requests
【中文标题】POST 请求文件 python-requests【英文标题】:POST request file python-requests 【发布时间】:2018-02-09 08:20:27 【问题描述】:这是我在 python 中需要的 post 请求的目标:
我得到了 XML 文件、url 和身份验证令牌。根据 xml 文件,我会从服务器返回 xml 响应。
req = requests.post(url='http://abc123.com/index.php/plan/', \
headers='auth-token': 'abCdeFgh', \
data='data': open('sample_plan.xml', 'rb'))
发布请求状态码为 200,但 xml 响应中有错误,如“<error>invalid XML for request</error>
”。假设该xml文件在我的发布请求中填写了错误的参数。
但在另一个工具中 - Postman - https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en?它以正确的 xml 响应工作并成功。我在 Postman 中拥有的东西:
在标题中: Key:Auth-token Value:abCdeFgh
在正文中: 选择了表单数据选项.. Key:数据 Value:选择的 sample_plan.xml 文件..
post请求的参数目标(所有参数都是强制性的): 1. 在标头中 - Authentication-Token 2. 在正文中 - 名称/contentID = 数据的 XML 文件
我应该将post请求的文件放入哪个参数?我几乎尝试了所有方法 - 基于 python-requests 文档...
感谢您的帮助!
【问题讨论】:
【参考方案1】:经过几个小时的尝试,我终于搞定了!
正确的参数是文件,并且必须有带有 3 个参数的元组值的“数据”键。否则它不能正常工作......
从请求文档中,我使用 files 参数进行分段编码上传http://docs.python-requests.org/en/master/api/ 使用 key 'data' 我被 + value of 3-tuple ('filename', fileobj, 'content_type') 所催促
因此我的问题的答案是(也使用'with'关键字,因此文件在套件完成后正确关闭)
with open('sample_plan.xml', 'rb') as payload:
headers = 'auth-token': 'abCdeFgh'
files = 'data': ('sample_plan.xml', payload, 'text/xml')
req = requests.post(url='http://abc123.com/index.php/plan/', \
headers=headers, files=files)
【讨论】:
以上是关于请教python requests.post()请求一个第三方接口的问题返回中文乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章