以下代码每次都会给出不同的结果,有时采用正确的人类可读 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 标头,但得到相同的结果。
.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"))