scrapy 爬虫返回json格式内容unicode编码转换为中文的问题解决

本文介绍在Python3.6.5环境下,使用Scrapy框架爬取JSON数据时遇到的Unicode格式问题及解决方案。通过先编码再解码的方法,成功将Unicode数据转换为可读格式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在基于python3.6.5 的环境使用scrapy框架爬虫获取json数据,返回的数据是unicode格式的,在spider里面的parse接口中打印response.text出来如下:

class TestSpider(Spider):
......
    def parse(self, response):
	    print(response.text)

结果如下:

{
	"status":"true",
	"last_view_time":null,
	"message":"",
	"shown_offset":0,
	"articles":[
	{
		"channel":"\u8d44\u8bafnew",
		"comments":113,
		"created_at":"09\u670828\u65e5",
		"desc":"  \u00a0 \u00a0 \u00a0 \u00a0 \u00a0\u00a0\u5173\u6ce8ITValue\uff0c\u67e5\u770b\u4f01\u4e1a\u7ea7\u5e02\u573a\u6700\u65b0\u9c9c\u3001\u6700\u5177\u4ef7\u503c\u7684\u62a5\u9053\uff01\u4e2d\u56fd\u667a\u6167\u529e\u516c\u54c1\u724c\u6df1\u5733\u5e02\u84dd\u51cc
		.......

python3版本开始取消了string的decode方法,不能像以前一样使用类似mystring.decode(“utf-8”) 的方式转码。

其实可以绕一下解决,先编码再解码:

 def parse(self, response):
     datas = json.dumps(response.text, ensure_ascii= False, indent=4, separators=(',', ': '))
     json_data = json.loads(datas).encode('utf-8').decode('unicode_escape')
     print(json_data)

关键在于:mystr.encode('utf-8').decode('unicode_escape')

最后打印内容正常了:

{
	"status":"true",
	"last_view_time":null,
	"message":"",
	"shown_offset":0,
	"articles":[
	{
		"channel":"默认",
		"comments":25,
		"created_at":"09月28日",
		"desc":"  了解快捷键能够提升您的生产力。这里有一些实用的 Ubuntu 快捷键助您像专业人士一样使用 Ubuntu。-- Abhishek Prakash有用的原文链接请访问文末的...","downs":0,"id":"82879369","isexpert":0,"sourcetype":1,"tag":"","title"
		............
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值