Python requests.get 以不同的编码给出响应

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

以下代码每次都会给出不同的结果,有时采用正确的人类可读 ASCII,但有时采用其他一些非 ASCII 编码格式。

HEADERS = ({'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
            'Accept-Language': 'en-US,en;q=0.9',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7'})

page = requests.get('https://www.powerball.com/', headers=HEADERS)
print(page.text)
print(page.encoding)

页面的编码始终为utf-8。造成差异的原因可能是什么?

尝试从浏览器发送的请求中复制 http 标头,但得到相同的结果。

python html encoding
1个回答
0
投票

.content
是一个字节对象,而
.text
始终返回一个字符串(编码是从
.content
自动猜测的)。

要获取其他编码的响应,请使用以下代码:

# replace gbk with your encoding

# method 1: set encoding manually
page.encoding = "gbk"
print(page.text)

# or

# method 2: convert bytes data to str, with a specific encoding
print(page.content.decode("gbk"))
© www.soinside.com 2019 - 2024. All rights reserved.