鱼C论坛

 找回密码
 立即注册
查看: 6012|回复: 5

[技术交流] 关于scrapy保存json文件保存中文字符

[复制链接]
发表于 2017-4-13 11:09:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
很多朋友学习小甲鱼的爬虫之后都会尝试用scrapy模块去爬取一些网站,但是保存下来的json格式中的中文都是类似\u4e2d\u56fd这种格式的
在这里给大家提供下保存成正确中文的方法

首先建立了scrapy工程之后,会有一个pipeline.py文件,打开修改这个文件


  1. import json        #记得添加这两个库
  2. import codecs

  3. class XXXPipeline(object):                 #XXX就是你建立scrapy工程的名称
  4.         def __init__(self):                #添加一下初始化方法
  5.                 self.file = codecs.open('item.json', 'wb', encoding='utf-8')        #item.json指的是你要保存的json格式文件的名称,编码格式一般都是'utf-8'
  6.         def process_item(self, item, spider):
  7.                 line = json.dumps(dict(item),ensure_ascii=False) + '\n'        #这一句会将你每次返回的字典抓取出来,“ensure_ascii=False”这一句话很重要,如果是True的话就是我们保存的\u4e2d\u56fd这种格式了
  8.                 self.file.write(line)        #写入到文件中
  9.                 return item
复制代码

然后我们要启用Pipeline这个组件使用我们的修改就需要修改setting.py这个文件
setting.py中默认有ITEM_PIPELINES的代码,默认是注释掉的,将注释去掉,注意这个字典中的'XXX.pipelines.XXXPipeline'与你修改的类名一致才会生效,后边的300正常不需要去修改

最后只要在命令中启动你的爬虫就可以,而且加了Pipeline之后,输出命令只需要 输入

  1. scrapy crawl XXX
复制代码

这样就可以,scrapy会自动保存json格式文件到item.json文件中,item.json就是你指定的在pipeline.py文件中打开的文件名

pipeline组件对于保存爬虫信息相当有用,除了json还有表格形式csv格式,本篇先只提json,之后再更新csv的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-9 17:34:48 | 显示全部楼层
学习了 试一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-9 17:44:07 | 显示全部楼层
成功了 哈哈 谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-9-9 00:14:06 | 显示全部楼层
卧槽,确实可以,向大神学习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-8-31 15:19:03 | 显示全部楼层
大神,我用PYcharm做的,保存的json文件打开后发现结果保存完了,但是后面还跟着一串\u4e2d\u56fd格式的,是啥原因?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-2 14:37:29 | 显示全部楼层
哈哈可克 发表于 2019-8-31 15:19
大神,我用PYcharm做的,保存的json文件打开后发现结果保存完了,但是后面还跟着一串%u4e2d%u56fd格式的, ...

看你文本编辑工具,这个应该是中文,你编码改一下应该就可以正常显示
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 09:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表