美文网首页
scrapy输出到文件字符编码设置

scrapy输出到文件字符编码设置

作者: 运维大湿兄 | 来源:发表于2019-03-21 18:34 被阅读0次

使用scrapy命令行工具建立了爬虫项目(startproject),并使用scrapy genspider建立了爬虫,用于抓取某中文门户网站首页的 新闻标题及其链接,全程都在虚拟环境(virtualenv)中执行。

使用scrapy crawl执行爬虫程序并导入一个json文件,此时可以看到,命令行窗口显示的 新闻标题是中文,但在打开导出的json文件时,其新闻标题显示为以\u开头的Unicode编码:

444532-20180630161851187-1159216333.png

V.S.

444532-20180630161902826-341330023.png

文件中的内容并非孤想要的,需要的是 显示为中文。

在胡乱地使用encode('utf-8')、encode('gbk').decode('utf-8')等代码处理后,结果问题未能解决,而且还导致爬虫程序执行发生异常。

直到看官网配置详解问题才得以解决:
方法一。执行scrapy crawl时添加配置 -s FEED_EXPORT_ENCODING=UTF-8。
https://docs.scrapy.org/en/latest/topics/settings.html
给爬虫或爬虫项目添加FEED_EXPORT_ENCODING配置项即可解决问题,这个配置项可以是 命令行级别的(最高)、项目级别的、爬虫级别的;默认情况下,在任何一个地方做了配置,使用-o时输出的文件都会按照这个配置来进行编码。

方法二。爬虫项目 的配置文件settings.py中进行设置,也是可以得到想要的结果的:此时不需要在命令行中添加FEED_EXPORT_ENCODING选项了。


444532-20180630163944880-1439980624.png

相关文章

网友评论

      本文标题:scrapy输出到文件字符编码设置

      本文链接:https://www.haomeiwen.com/subject/frgcvqtx.html