Scrapy输出JSON中文乱码
发现问题
在使用下面的命令运行scrapy使其输出json格式时,出现了中文乱码问题, 如下图:
1 | scrapy crawl spidername -o test.json |
解决问题
方法一
运行爬虫时指定编码格式, 即在命令后面增加 -s FEED_EXPORT_ENCODING=utf-8。如下:
1 | scrapy crawl spidername -o test.json -s FEED_EXPORT_ENCODING=utf-8 |
方法二
方法一虽然可以解决问题,但并没有一劳永逸,每次运行爬虫都需要指定编码格式。所以我们直接在 settings 中指定编码格式。在合适的位置加入下面一行即可。
1 | FEED_EXPORT_ENCODING = 'utf-8' |
方法三
自定义Pipeline,并在settings中开启
1 | class JsonPipeline(object): |
在settings中找到ITEM_PIPELINES,修改成如下格式
1 | ITEM_PIPELINES = { |
自定义Pipeline之后,就不用使用 -o 指定文件了。如下:
1 | scrapy crawl spidername |