当我昨天试用Scrapy
时,我试图获取一个中文Ruby论坛的帖子标题。但是,Scrapy
的输出都是Unicode
,就像
"[\u5317\u4eac][2017\u5e746\u670818\u65e5] Rails Girls"
我检查了响应的编码是UTF-8
,并打印出了正确显示汉字的body内容。在
所以,我不明白为什么我使用Scrapy选择器来选择标题并将输出放入Json文件。然后,文件的内容都是字符指针,比如\u5317
。任何帮助都将不胜感激。谢谢。在
我的代码:
^{pr2}$
Tags:
当Scrapy使用URL的响应调用回调时,响应包含解码的Unicode主体内容,即
response.text
,以及接收到的主体的“原始”字节(无论使用什么编码),如response.body
。在当您使用从
response.xpath()
或response.css()
调用中获取的废选择器,并对它们调用.extract()
时,您将得到Python Unicode字符串。在Python2.7使用
\uXXXX
转义序列来表示它们。这就是您在控制台日志中看到的结果。在但如果在这些字符串上调用print,则会看到字符本身:
现在,如果您将条目导出为JSON,例如使用
-o items.json
,那么默认情况下,Scrapy还将在不同项的JSON字符串中编写\uXXXX
转义序列。这与python2.7如何表示非ASCII字符相同,这是100%有效的JSON输出,实际上是Python的json
模块(称为ensure_ascii
)的默认输出。在如果在JSON输出文件中确实需要UTF-8字符,可以使用Scrapy的^{} setting 。在
相关问题 更多 >
编程相关推荐