将通过urllib2获取的gzipped数据转换为HTML
我现在使用 mechanize 来读取压缩过的网页,代码如下:
br = mechanize.Browser()
br.set_handle_gzip(True)
response = br.open(url)
data = response.read()
我想知道怎么把通过 urllib2 获取的压缩数据解压成 HTML 文本呢?
req = urllib2.Request(url)
opener = urllib2.build_opener()
response = opener.open(req)
data = response.read()
if response.info()['content-encoding'] == 'gzip':
HOW TO DECOMPRESS DATA TO HTML
2 个回答
-2
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,当你在写代码时,可能会发现某些功能没有按照你的预期工作。这时候,你可能会去网上查找解决办法,像是在StackOverflow这样的论坛上。
在这些论坛上,很多人会分享他们遇到的问题和解决方案。你可以看到其他程序员是怎么解决类似的问题的,这对初学者来说是个很好的学习机会。
有时候,问题的解决方案可能涉及到一些代码示例,这些代码示例可以帮助你更好地理解如何修复你的代码。比如说,某个功能可能需要特定的参数,或者某个函数的用法可能和你想的不一样。
总之,编程过程中遇到问题是很正常的,关键是要学会如何寻找答案和解决方案。多看看别人的经验,慢慢你也会变得更加熟练。
def ungzip(r,b):
headers = r.info()
if ('Content-Encoding' in headers.keys() and headers['Content-Encoding']=='gzip') or \
('content-encoding' in headers.keys() and headers['content-encoding']=='gzip'):
import gzip
gz = gzip.GzipFile(fileobj=r, mode='rb')
html = gz.read()
gz.close()
headers['Content-type'] = 'text/html; charset=utf-8'
r.set_data(html)
b.set_response(r)
14
试试这个:
import StringIO
data = StringIO.StringIO(data)
import gzip
gzipper = gzip.GzipFile(fileobj=data)
html = gzipper.read()
现在html
应该包含了HTML内容(打印出来看看)。想了解更多信息,可以查看这里。