请教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()请求一个第三方接口的问题返回中文乱码的问题的主要内容,如果未能解决你的问题,请参考以下文章

python+requests——post提交文件

requests上传post文件,python

python接口自动化测试-requests.post()

python接口自动化测试-requests.post()

python爬虫 requests库之post请求

Python Requests post并将得到结果转换为json