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

 

标签: python scrapy

发表评论:

©2010-2024 Jeen All Rights Reserved.Powered by emlog 京ICP备15058100号-1