Scrapy Json输出上的Unicode

时间:2015-06-19 23:34:59

标签: python json unicode utf-8 scrapy

我在scrapy的json输出上遇到问题。 Crawler工作得很好,cli输出工作没有问题。 XML项目导出器没有问题,输出以正确的编码保存,文本不会被转义。

  • 尝试使用管道并直接从那里保存项目。
  • 使用Feed导出器和json库中的jsonencoder

这些不起作用,因为我的数据包括子分支。

json输出文件中的Unicode文本被转义如下: “\ u00d6 \ u011fretmen S \ u00fcleyman Yurtta \ u015f Cad。”

但是对于xml输出文件,它是正确编写的: “ÖğretmenSüleymanYurttaşCad。”

甚至更改了scrapy源代码,为ScrapyJSONEncoder包含ensure_ascii = False,但没有用。

那么,有没有办法强制scrapyjsonencoder在写入文件时不会逃避。

EDIT1: 顺便说一句,使用Python 2.7.6作为scrapy不支持Python3.x

这是标准的scrapy爬虫。蜘蛛文件,设置文件和项目文件。首先从基本URL开始抓取页面列表,然后从这些页面中抓取内容。从页面中提取的数据将分配给scrapy项目的items.py中定义的变量,以utf-8编码。这没有问题,因为一切都在XML输出上运行良好。

scrapy crawl --nolog --output = output.json -t json spidername

Xml输出在此命令中没有问题:

scrapy crawl --nolog --output = output.xml -t xml spidername

我已尝试编辑scrapy / contrib / exporter / init .py和scrapy / utils / serialize.py,以将ensure_ascii = False参数插入json.JSONencoder。

EDIT2:

再次尝试调试。对于Python2.7 / json / encoder.py代码没有问题。数据完好无损且无法转义。之后,由于scrapy工作异步并且有很多回调,因此很难调试。

EDIT3:

有点脏,但在编辑Python2.7.6 / lib / json / encoder.py并将ensure_ascii参数更改为False后,问题似乎就解决了。

2 个答案:

答案 0 :(得分:1)

由于我没有您的代码进行测试,您是否可以尝试使用id 尝试: members

答案 1 :(得分:-1)

按照in the documentation所述,在您的settings.py中添加两个参数:

<svg>