2011-03-24 56 views
0

我的代码在这里:编码的问题()一个GBK页面

# coding:utf-8 

if __name__ == '__main__': 
    from urllib2 import urlopen 
    url = 'http://iccna.blog.sohu.com/164572951.html' 
    data = urlopen(url).read() 
    soup = BeautifulSoup(data,fromEncoding='gb18030') 
    print WebExtractor(soup) 

,但在调试时,这样的数据:

��5h�,��4�H�5��VM��\ 

我应该怎么做才能得到正确的数据BeautifulSoup?谢谢!

+0

您是如何查看数据的?来自Eclipse的变量面板的 – 2011-03-24 08:29:51

+0

。 – MangMang 2011-03-24 09:40:45

回答

1

问题是服务器返回由Gzip压缩的数据。试试这个:

#-*- coding: utf-8 -*- 
from __future__ import print_function 

import gzip 
import StringIO 
import urllib2 
from BeautifulSoup import BeautifulSoup 

url = 'http://iccna.blog.sohu.com/164572951.html' 
response = urllib2.urlopen(url) 
data = response.read() 
data = StringIO.StringIO(data) 
gzipper = gzip.GzipFile(fileobj=data) 
html = gzipper.read() 
soup = BeautifulSoup(html, fromEncoding='gbk') 
print(soup) 

汉字在我的系统上看起来还是错的,但这可能会给你正确的方向。

+0

非常感谢。有用! 我以前尝试过gzip,但也许我以错误的方式使用它。我的代码是: import gzip gzip.decompress(data) – MangMang 2011-03-24 09:44:33