学习自:http://blog.csdn.net/u012150179/article/details/34450547
首先是使用scrapy shell url 来尝试某个中文页面中获取到一个中文字符串
scrapy shell http://blog.csdn.net/u012150179/article/details/34450547
这个url链接进行元素审查,观察发现,h4下的text部分是中文的.编写sel.xpath
sel.xpath('//h4/text()').extract()
获取到了
In [1]: sel.xpath('//h4/text()').extract()
shell:1: ScrapyDeprecationWarning: "sel" shortcut is deprecated. Use "response.xpath()", "response.css()" or "response.selector" instead
Out[1]:
[u'\u63d0\u53d6\u7f51\u9875\u4e2d\u4e2d\u6587\u5e76\u8f93\u51fa\u6216\u8005\u662f\u4fdd\u5b58\u65f6\u7ecf\u5e38\u4f1a\u51fa\u73b0\u4e00\u4e2a\u95ee\u9898\u662f\u663e\u793a\u7684\u662f\u4e2d\u6587\u5bf9\u5e94\u7684unicode\u7f16\u7801\u800c\u975e\u4e2d\u6587\u672c\u8eab\uff0c\u8fd9\u91cc\u8bb2\u8ff0\u89e3\u51b3\u8fd9\u79cd\u95ee\u9898\u7684\u65b9\u6cd5\u3002',
u'\u6211\u7684\u540c\u7c7b\u6587\u7ae0',
u'\u6b64\u535a\u5ba2\u5df2\u4e0d\u518d\u66f4\u65b0\uff0c\u65b0\u535a\u5ba2\u5730\u5740\uff1a\r\n',
u'GitHub\u4e3b\u9875\uff1a\r\n']
观察是一个列表.将sel部分结果赋值给temp
temp = sel.xpath('//h4/text()').extract()
然后for输出中文
for i in temp[0]:
print i.encode('utf-8'),
encode()只针对str数据结构,如果不是,可以先转换为str。上面由于得到的title为list类型,所以转换如上。
主要代码不长在项目w3c抓取中.可以参考:
11 class W3SchoolPipeline(object):
12 def __init__(self):
13 #初始化打开json记录文件数据
14 #定义编码为utf-8
15 self.file = codecs.open('w3school_data_utf8.json', 'wb', encoding='utf-8')
这部分设定中文的编码方式
def process_item(self, item, spider):
18 line = json.dumps(dict(item)) + '\n'
19 # print line
20
21 self.file.write(line.decode("unicode_escape"))
22 return item
23 #返回类型必须要是item类型
这部分设定unicode_escape的写入方式
“反编码”,别在意名字,随便起的,大意是一串字符,是unicode码,如:‘\u53eb\u6211’,进行反编码后得到其对应的汉字。
结果为:
\u53eb\u6211 叫我
原创文章,转载请注明: 转载自URl-team
本文链接地址: Scrapy-笔记二 中文处理以及保存中文数据