Python Scrapy抓取数据中文存utf8乱码问题
作者:Jeen 发布于:2013-6-25 9:34 Tuesday 分类:工作笔记
继 http://blog.wdoc.info/note/79.html (在回调函数中加载新页面XPath)之后
最近出现了 网页GB2312编码,无法正常转换为utf8存入数据库的问题
网上大肆搜寻一番,说的编码转换一一试过,似乎问题不太好解决
于是直接在命令行下 使用python >>>scrapy shell http://my.test.url
加载页面之后输出类容 来看了下 (截取了一部分)测试片段 如下
>>>tt = "\xe6\x98\xaf\xe4\xb8\x80\xe5\xae\xb6\xe4\xb8\x93\xe4\xb8\x9a\xe9\x94\x80\xe5\x94\xae\xe3\x80\x8a\xe9\x93\x85\xe9\x85\xb8\xe5\x85\x8d\xe7\xbb\xb4\xe6\x8a\xa4\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8aUPS\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe7\x9b\xb4\xe6\xb5\x81\xe5\xb1\x8f\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8aEPS\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe5\xa4\xaa\xe9\x98\xb3\xe8\x83\xbd\xe4\xb8\x93\xe7\x94\xa8\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe9\x93\x85\xe9\x85\xb8\xe5\x85\x8d\xe7\xbb\xb4\xe6\x8a\xa4\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xe3\x80\x81\xe3\x80\x8a\xe8\x83\xb6\xe4\xbd\x93\xe8\x93\x84\xe7\x94\xb5\xe6\xb1\xa0\xe3\x80\x8b\xef\xbc\x8c\xe5\x8c\x85\xe6\x8b\xac\xe5\xae\x89\xe8\xa3\x85\xe3\x80\x81\xe8\xb0\x83\xe8\xaf\x95\xe5\x8f\x8a\xe7\xbb\xb4\xe4\xbf\xae..."
>>>print tt
直接乱码
>>>print tt.decode('utf8','ignore')
显示正常中文(ignore 在解码过程中直接忽略异常编码)
但是在Scrapy中
temp = urllib2.urlopen(newurl) #请求
temp = temp.read() #读数据
temp = temp.decode('utf8','ignore') # 这样会提示找不到默认编码...
newresponse = HtmlResponse(newurl)
newresponse._set_body(temp)
于是最终解决方案
temp = temp.decode('utf8','ignore').encode('gbk')
#过程比较潦草,仅做记录 欢迎指正
#如果对python 如何使用Scrapy加载网页不熟悉的朋友,请先参阅 http://blog.vsfor.com/note/79.html
发表评论: