首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解码用urllib下载的html文件

解码用urllib下载的html文件
EN

Stack Overflow用户
提问于 2016-12-20 12:10:59
回答 1查看 806关注 0票数 3

我试图下载这样一个html文件:

代码语言:javascript
复制
import urllib

req  = urllib.urlopen("http://www.stream-urls.de/webradio")
html = req.read()

print html

html = html.decode('utf-16')

print html

由于req.read()之后的输出看起来像unicode,所以我尝试转换响应,但是得到了这个错误:

代码语言:javascript
复制
Traceback (most recent call last):   File
"e:\Documents\Python\main.py", line 8, in <module>
    html = html.decode('utf-16')   
File "E:\Software\Python2.7\lib\encodings\utf_16.py", line 16, in decode
    return codecs.utf_16_decode(input, errors, True) 
UnicodeDecodeError: 'utf16' codec can't decode bytes in position 38-39: illegal UTF-16 surrogate

我该怎么做才能得到正确的编码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-20 12:27:16

使用请求,您就可以得到正确的、未压缩的HTML。

代码语言:javascript
复制
import requests

r  = requests.get("http://www.stream-urls.de/webradio")
print r.text

编辑:如何在不保存文件的情况下使用gzipStringIO压缩数据

代码语言:javascript
复制
import urllib
import gzip
import StringIO

req  = urllib.urlopen("http://www.stream-urls.de/webradio")

# create file-like object in memory
buf = StringIO.StringIO(req.read())

# create gzip object using file-like object instead of real file on disk
f = gzip.GzipFile(fileobj=buf)

# get data from file
html = f.read()

print html
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41242070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档