1、问题产生
想抓取新浪网页数据,写下以下代码:
import urllib2
url = u'http://www.sina.com.cn'
req = urllib2.urlopen(url)
html = req.read()
print html
运行后,出现整屏乱码(截图略)
2、问题分析
第一反映是需要转码,那么需要明确网页编码后,用decode进行转码,获取网页编码的代码如下:import chardet
print chardet.detect(html)
结果显示为:{'confidence':0.0,'encoding':None}
None是什么鬼?google一下,这种情况很有可能是网页被压缩,应该尝试通过解压缩网页(字符串)解决此问题。
3、问题解决
step1:将网页源代码导入"内存文件"后进行操作内存文件需要使用StringIO模块
import StringIO
string = StringIO.StringIO(html)
------------------------------------------------------------------------------------------------
这个string是个什么东西呢?以为是字符串,但type一下,这是个实例'instance',理解成是个文件吧。
------------------------------------------------------------------------------------------------