Python 获取非常复杂的数据,如何解码(请求)

问题描述 投票:0回答:1

我用:

import time,requests

ts = str(int(time.time()))
         
s = requests.session()

payload = {"email": "[email protected]","timestamp":ts}

headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;Win64) AppleWebkit/536.36 (KHTML, like Gecko) Chrome/89.0.4189.82 Safari/537.16',
  'Accept-Encoding': 'gzip, deflate, br',
  'Accept-Language': 'en-US,en;q=0.9',
  'Origin': 'https://smailpro.com',
  'Referer': 'https://smailpro.com/advanced',
  'Content-Type': 'application/json'
}

r = s.post('https://smailpro.com/app/key',json=payload, headers=headers)

print(r.text)

并得到这样的东西:

♥��^7⌂�3W►��↕�♂r��+G��"�B�7���@♀��fd{^◄��!�◄l4�↑dx2n‼Sda��bd���;L���E�♦����KG�⌂c�{↔�♫*�lӖޡ��n��l���b���k]��z[_�]|����f�ׯ�_�rs��ɭ-�↑yw��ͥ���J�♫6U���dZ?�W��Y'�M�`����=�T�♥�♀6��m1�~�♠����J�Ur��b��b→p�P��M�♫+�YC;▲
♥��W5Uƹ�@r��9o��|

如何解码这些数据? (它必须是对象数组:{code:200,items:'eyJ0eXA ....iOiJKV1',msg:'OK'})

我检查:

print(r.encoding) # it returns utf-8

我用:

with open('output.txt','w+',encoding='utf-8') as f:
  f.write(r.text) # ♥��^7⌂�......o��|

with open('output.txt','+bw',encoding='utf-8') as f:
  f.write(r.text) # error

base64:

import base64
res = base64.b64decode(r.text)
print(res) # error

编码、解码和 r.content 不起作用

我只是不知道如何获取数据...

python encoding python-requests
1个回答
0
投票

请删除此行并再试一次:

 'Accept-Encoding': 'gzip, deflate, br',

你要求压缩版,但你没有解压它

如果仍然返回相同的响应,可能是因为服务器只提供了纪录片的压缩版本

然后执行以下操作:

Data=gzip.decompress(r.content).decode("utf-8")

© www.soinside.com 2019 - 2024. All rights reserved.