自己练习爬取拉钩网信息的时候爬取的信息如下:
{'jobClass': [u'\u9500\u552e\u52a9\u7406'],
'jobUrl': u'https://www.lagou.com/zhaopin/xiaoshouzhuli/'}
2018-08-10 15:35:48 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.lagou.com/>
中文都是经过编码的:
写这个爬虫列子的网友说使用如下方法:
通过阅读源码知道,在scrapy.exporters 的 JsonLinesItemExporter类中,对数据进行了编码。所以我们可以在spiders文件夹的同级目录下创建一个文件夹,名字随意,比如我新建了recode,在该文件夹中创建一个init.py文件,在里面写一个类继承JsonLinesItemExporter,并且设置不要任何编码,如果你是pyCharm,会在新建python package时自动生成init.py文件,在文件中添加如下代码:
from scrapy.exporters import JsonLinesItemExporter
class recodes(JsonLinesItemExporter):
def __init__(self, file, **kwargs):
super(recodes,self).__init__(file, ensure_ascii = None)
然后打开settings.py文件,在其中添加配置:
FEED_EXPORTERS_BASE = {
'json': 'First.recode.recodes',#这个位置注意是文件索引,根据你实际情况修改。
'jsonlines' : 'scrapy.contrib.exporter.JsonLinesItemExporter'}
然鹅,我并没有成功,导出来的json仍然是编码过的
后来找了个更加简单的方式就是在setting.py里添加
FEED_EXPORT_ENCODING = 'utf-8'
这样导出的json数据就能正常显示中文啦