【scrapy】关于爬取的内容是Unicode编码

时间:2023-03-10 05:21:15
【scrapy】关于爬取的内容是Unicode编码

自己练习爬取拉钩网信息的时候爬取的信息如下:

{'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数据就能正常显示中文啦