我使用以下代码python 3.3来阅读nyu的主页。但是,它在未知字符集中显示不正确的输出。响应头内容类型是UTF-8。代码可以正确读取其他htmls,但不能读取nyu页面。你能帮助我吗?
url='http://www.stern.nyu.edu/'
opener = urllib.request.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0'),
('Content-Type', 'text/html; charset=UTF-8')]
r=opener.open(url)
r.read().decode('UTF-8')
,结果摘录在这里:
¢=¿/JçW®<× 4ô9ïÛ9$*Á¹³÷î·ïõ¡(ÂÄÀPZÓ¯seßVÿ_<ÅsÎF"t¢ÂQýMâ°AÈX¨ÕA ¨IØ ³ <ðGÀp«�¾X(ÛìÊß}XkfÌ=] Ð0.|¿v°f©ÛTüAH
答案 0 :(得分:1)
响应是Gzip,因此尝试将其解码为UTF-8毫无意义。你可以自己解压缩它:
from io import StringIO
import gzip
with gzip.GzipFile(fileobj=r) as handle:
html = handle.read()
或者使用类似Requests之类的东西,它会为您完成:
import requests
html = requests.get('http://www.stern.nyu.edu/', headers={
'User-agent': 'Mozilla/5.0'
}).text