鱼C论坛

 找回密码
 立即注册
查看: 1339|回复: 2

scrapy中文输出保存 Pipeline代码如何写

[复制链接]
发表于 2018-5-7 18:05:13 | 显示全部楼层 |阅读模式

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

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

x

我在用scrapy爬链家网,内容都是中文,由于scrapy的特性,中文字符都会被scrapy转成unicode输出,所以我在pipeline里用以下代码尝试将unicode转成中文输出保存

  1. import json

  2. class LianjiaPipeline(object):

  3.     def process_item(self, item, spider):
  4.         with open('data_cn1.json', 'a') as f:
  5.             json.dump(dict(item), f, ensure_ascii=False)
  6.             f.write(',\n')
  7.         return item
复制代码


然后我在windows cmd里运行该爬虫(scrapy crawl lianjiaspider -o items.csv)的时候发现, unicode是转换成中文输出了,但是由于网页里包含 &nbsp这种字符无法被转换成cmd适用的bgk编码,浴室就会发生以下报错:

UnicodeEncodeError: 'gbk' codec can't encode character '\xa0' in position 7: illegal multibyte sequence

我查到网上的方法是可以通过以下代码将&nbsp替换掉,这样就不会出现gbk转码错误

string.replace(u'\xa0', u' ')

但是我尝试了一下实在找不到这个代码要怎么写进pipeline里才能正常运行,求大神指教~
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-5-7 18:11:13 | 显示全部楼层
啊我知道了,我应该去爬虫文件里修改,在数据清洗的过程中就把\xa0这种字符清洗掉
在pipeline里面再修改已经太晚了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-7 18:26:36 | 显示全部楼层
我又再一次在发完贴之后马上自己找到答案..真是够了哈哈哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-30 00:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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