将通过urllib2获取的gzipped数据转换为HTML

5 投票
2 回答
6457 浏览
提问于 2025-04-15 15:50

我现在使用 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内容(打印出来看看)。想了解更多信息,可以查看这里

撰写回答