摘要
Scrapy爬取中文,显示ascii码,如何转变成utf-8正常编码?如何用把json的ascii码转化成正常中文?本文使用scrapy shell,并且使用json包中的json.dumps(dictname,ensure_ascii=False)
进行了成功处理。
Issue: 显示ASCII码,而不是中文
尝试用观察者网来测试。使用命令行。
$ scrapy shell 'http://www.guancha.cn'
>>> response.url
'http://www.guancha.cn'
抓取导航条上的中文内容
>>> nav = response.css('div.nav a::text').extract()
>>> nav
[u'\u9996\u9875', u'\u653f\u6cbb', u'\u7279\u6717\u666e\u201c\u63a8\u7279\u5916\u4ea4\u201d\u5251\u6307\u5317\u4eac\u8fd8\u662f\u534e\u76db\u987f\uff1f', u'\u9b4f\u8fea\u82f1',..., u'\u4e13\u9898', u'\u4e13\u680f']
Reference
在采集回来的网页内容要存储为TXT,因为数据结果是一个Dic的,所以将其换为Json。但是转换的过程中汉字变为了ascii编码格式了!通过help(“json”) 看到里面有一个配置信息。
<span style="font-family:Microsoft YaHei;font-size:18px;"> dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)</span>
ensure_ascii这个属性配置!
需要关闭自动ensure_ascii:
data={"url":"http:www.dianwe.com","content":"采集Test","CreateTime":"2014-07-08 23:29"}
bizResult= json.dumps(data, ensure_ascii=False)
print(bizResult)
这样便不会转为Ascii 编码了!
测试:通过
使用命令json.dumps(parameter, ensure_ascii=False)
。测试通过。
>>> import json
>>> result = json.dumps(nav,ensure_ascii=False)
>>> print(result)
["首页", "政治", "特朗普“推特外交”剑指北京还是华盛顿?", "魏迪英", "对西方人来说,协商民主还是件挺难理解的事",..., "奥巴马", "智库前沿", "专题", "专栏"]
备注:测试环境
scrapy 1.2.2
python 2.7.12
os x 10.10.3