Scrapy中文输出与中文保存

来源:互联网 发布:中国沿海湿地保护网络 编辑:程序博客网 时间:2024/06/07 03:35

使用Scrapy抓取中文时,输出一般是unicode,要输出中文也只需要稍作改动。
两种情况:

单纯交互输出

如代码:

title = sel.xpath('a/text()').extract()print title

此时输出的是title对应中文的unicode格式,只需要指定“utf-8”编码即可输出中文,如下:

title = sel.xpath('a/text()').extract()for t in title:    print t.encode('utf-8')

这里需要注意的是“encode()”函数是字符串专有的,而title是一个列表,因此需要对title中的每一个执行该操作。

存储

存储中文数据可以利用pipeline实现

1.定义pipeline

# -*- coding: utf-8 -*-import codecsimport jsonclass TutorialPipeline(object):    def __init__(self):        self.file = codecs.open('data_cn.json', 'wb', encoding='utf-8')    def process_item(self, item, spider):        line = json.dumps(dict(item)) + '\n'        self.file.write(line.decode("unicode_escape"))        return item

上述方法将得到的item解码,以便正常显示中文,并保存到定义的json文件中。

2.注册自定义的pipeline
为了启动pipeline,必须将其加入到“ITEM_PIPLINES”的配置中,在settings.py中加入下面一句:

ITEM_PIPELINES = {        'tutorial.pipelines.TutorialPipeline':300          }

其中根目录是tutorial,pipelines是我的pipeline文件名,TutorialPipeline是类名

OK,搞定

0 0
原创粉丝点击