python 3.3 urllib读取未知字符集中的html

时间:2014-01-27 05:10:57

标签: python utf-8 set character urllib

我使用以下代码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

1 个答案:

答案 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