关于urllib2返回网页乱码,beautifulsoup没法解析问题

想写一个抓取免费代理并验证是否可用得爬虫,写的过程当中发现一个问题,某些网站用urll2请求返回乱码,而且把返回数据给beautifulsoup解析不出数据,若是是编码问题致使的乱码确定不会影响beautifulsoup的解析,因此确定是其余缘由,通过各类百度,谷歌,找到的问题的缘由。python

一些网站无论你的请求头带不带网站

Accept-Encoding:gzip

他都会返回通过gzip压缩后的内容,即返回头部带有编码

Content-Encoding:gzip 

 这就是beautifulsoup没法解析的缘由。既然知道的缘由,那就好办了,将gzip解压便可。url

import urllib2
import gzip
import StringIO


def ungzip(buf):

    content = buf.read()
    content = StringIO.StringIO(content)      #将content做为“内存文件”操做               
    buf = gzip.GzipFile(fileobj=content)
    return buf

buf = urllib2.urlopen('http://www.kuaidaili.com/free/inha/')
if buf.headers.get('Content-Encoding') == 'gzip':
    buf = ungzip(buf)
print buf.read()
相关文章
相关标签/搜索