使用scrapy命令行工具建立了爬虫项目(startproject),并使用scrapy genspider建立了爬虫,用于抓取某中文门户网站首页的 新闻标题及其链接,全程都在虚拟环境(virtualenv)中执行。
使用scrapy crawl执行爬虫程序并导入一个json文件,此时可以看到,命令行窗口显示的 新闻标题是中文,但在打开导出的json文件时,其新闻标题显示为以\u开头的Unicode编码:
![](https://img.haomeiwen.com/i11698127/446e6411742b79f0.png)
V.S.
![](https://img.haomeiwen.com/i11698127/237de26fbda2135c.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选项了。
![](https://img.haomeiwen.com/i11698127/cea8d6af08f5e682.png)
网友评论