当前位置: 首页 > 知识库问答 >
问题:

Scrapy Json输出上的Unicode

金坚
2023-03-14

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

    < li >尝试使用管道并直接从那里保存项目。 < li >使用json库中的提要导出器和jsonencoder from >

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

json 输出文件中的 Unicode 文本是这样转义的:“\u00d6\u011fretmen S\u00fcleyman Yurtta\u015f Cad。

但是对于xml输出文件,它被正确地写成:“Öğretmen Süleyman Yurttaş Cad。

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

那么,有没有办法强制抓取文件编码器在写入文件时不逃脱。

编辑1:顺便说一句,使用蟒蛇2.7.6作为废料不支持Python3.x

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

scrapy crawl-nolog-output = output . JSON-t JSON spider name

使用以下命令,Xml输出没有问题:

抓取output.xmlxml spidername

我尝试过编辑抓取/贡献/导出/init.py和抓取/利用/序列化.py将ensure_ascii=False参数插入到json中。JSONencoder.

编辑2:

再次尝试调试。在Python2.7 / json /编码器之前没有问题.py代码。数据完好无损,不会转义。在那之后,它变得难以调试,因为抓取工作异步并且有很多回调。

编辑3:

有点脏的hack,但是在编辑python 2 . 7 . 6/lib/JSON/encoder . py,将确保_ascii参数改为False之后,问题似乎就解决了。

共有2个答案

司寇善
2023-03-14

按照文档中的描述,向settings.py添加两个参数:

FEED = 'json'
FEED_EXPORT_ENCODING = 'utf-8'
浦琪
2023-03-14

由于我没有您要测试的代码,您能否尝试使用< code > codecs Try:< code > import codecs f = codecs . open(' your filename ',' your_mode ',' utf-8 ')f . write(' what you want to write ')f . close()

 类似资料:
  • 问题内容: 我在配置logstash以输出到AWS EC2上的Elasticsearch集群时遇到麻烦。 我正在使用Logstash版本1.1.5和Elasticsearch 1.19.8。 这是我在logstash中的输出配置: 这是elasticsearch.yml中的相应配置 我使用以下命令启动logstash: 在启动一段时间后,出现以下故障: 我的怀疑是,logstash需要使用诸如cl

  • 我有几个<code>(标题,文本) 现在我想在这些有序对的文本字段上实现单词计数。 所以我的最终输出应该是这样的: 总而言之,我想在第一个mapduce的输出记录上单独实现wordcount。有人能给我一个好方法吗?或者我如何链接第二个map duce作业来创建上述输出或更好地格式化它? 下面是代码,从github借用并做了一些更改 我们在线找到的字数代码对所有文件进行字数统计,并给出输出。我想分

  • 交互式应用程序通常要分别用类 istream 和 ostream 输入和输出数据。当提示信息出现在屏幕上时,用户输入一个数据来响应。显然,提示信息必须在执行输入操作前出现。在有输出缓冲区的情况下,只有在缓冲区已满时、在程序中明确地刷新输出缓冲区时或因程序结束而自动刷新输出缓冲区时,输出信息才会显示到屏幕上。为保证输出要在下一个输入前显示,C++ 提供了成员函数tie,该函数可以实现输入/输出操作的

  • Jsoup官方说明里,一个重要的功能就是output tidy HTML。这里我们看看Jsoup是如何输出HTML的。 HTML相关知识 分析代码前,我们不妨先想想,"tidy HTML"到底包括哪些东西: 换行,块级标签习惯上都会独占一行 缩进,根据HTML标签嵌套层数,行首缩进会不同 严格的标签闭合,如果是可以自闭合的标签并且没有内容,则进行自闭合 HTML实体的转义 这里要补充一下HTML标

  • 问题内容: 我在终端上运行Python 给定一个字符串 我想它在某种程度上,这样的换行符的将是可见的,而不是去到下一行 我可以这样做而不必修改字符串并添加双斜杠() 问题答案: 采用

  • 文件 std::fs::File 本身实现了 Read 和 Write trait,所以文件的输入输出非常简单,只要得到一个 File 类型实例就可以调用读写接口进行文件输入与输出操作了。而要得到 File 就得让操作系统打开(open)或新建(create)一个文件。还是拿例子来说明 use std::io; use std::io::prelude::*; use std::fs::File;