又是中文乱码问题,本文介绍scrapy保存结果到json或者xml文件的时候,中文乱码的问题。那么,该如何才能解决这个问题呢?

苏南大叔:scrapy抓取结果保存为文件,如何解决中文乱码问题? - scrapy-file-encoding
scrapy抓取结果保存为文件,如何解决中文乱码问题?(图2-1)

大家好,这里是苏南大叔的“程序如此灵动”博客。本文解决scrapy抓取文章结果乱码的问题。本文测试环境:win10python@3.6.8scrapy@2.5.1

建立蜘蛛项目

如何建立一个scrapy蜘蛛项目,详情请参考下面的链接:

创建一个新的项目su,新建一个名为example的蜘蛛,目标网站是example.com

scrapy startproject su
cd su
scrapy genspider example example.com

这一步就是基本操作,主要是交代一下项目运行的背景。

运行蜘蛛项目

那么,如何运行这个新建的example蜘蛛呢?

直接运行:

scrapy crawl example

把结果保存到json文件:

scrapy crawl example -o result.json

解决方案

处理json文件里面中文乱码的问题:

scrapy crawl example -o result.json -s FEED_EXPORT_ENCODING=utf-8

苏南大叔:scrapy抓取结果保存为文件,如何解决中文乱码问题? - 中文乱码对比
scrapy抓取结果保存为文件,如何解决中文乱码问题?(图2-2)

解决方案的核心内容就是:

-s FEED_EXPORT_ENCODING=utf-8

相关链接:

额外提示

  • json文件的写入,是个append追加模式。也就是说:多次运行的话,是获得个多次的结果叠加。
  • 最终的json文件存在一定概率,是个非法格式的json文件的可能性。主要原因可能是程序异常终止,没有写入数组的结尾符号。
  • json文件的内容,并不是及时写入的。所以,主动关闭正在运行中的scrapy命令的话,可能会丢失数据。主动ctrl+c停止运行,是可以触发缓存内容正常输出的。

相关链接

总结

又是中文乱码问题,总是少不了encoding的设置问题。更多scrapy经验文字,请点击:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。