Python Scrapy的json转码中文处理1:命令行方式

摘要

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

Python下调用json.dumps中文显示问题解决办法

在采集回来的网页内容要存储为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

    原文作者:Tim_Lee
    原文地址: https://www.jianshu.com/p/c03d968ef68b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞