unicode转中文工具_原来可以这样做url中文解码

0259a5f76e2cc3efa3c65e7159865f8e.png

大家做爬虫时,是不是也遇到过url是中文,然后在显示时转码了的情况,一长串字符,根本就不知道是什么,要验证的时候很不方便,这里分享一下我的处理方法。

一、尝试

一长串字符,首先想到用在线unicode转中文,结果还是不知道是什么. 原内容:

%5B9500%5D%5B552e%5D%5B6307%5D%5B6807%5D%5B5b8c%5D%5B6210%5D%5B7387%5D111%5B8d39%5D%5B7528%5D%5B989d%5D%5B5ea6%5D%5B67e5%5D%5B8be2%5D

转后:

[9500][552e][6307][6807][5b8c][6210][7387]111[8d39][7528][989d][5ea6][67e5][8be2]

心想这是什么东西?

难道就这样失败了?

仔细看看内容,四个字,四个字的,是不是有点像unicode?可是中括号是什么鬼?

试着拿一个数试试, 销.

bc25dddfba27d61fd283c71ce3caf74e.png
41f70f599b5fe9d9abd87a4304c9ce24.png

果然,不是巧合,真的就是unicode, 可是这么多括号,手动解决是不可能的。

二、怎么才能去除括号并且换上 u呢?

当然首选是pyhton, 上代码:

89d23ddf78337f39accf39dd16d75be3.png

首先,我们引入要用的包,这里主要是两个包,parse用来做第一遍转码,转成带括号的形式。然后使用re.sub对括号进行替换和消除。

输出:

380960fb28fe96c55a640647c5c9a249.png

其实应该有方法再转一次输出中文的,可是一时半会没找到方法。只能用笨办法了,复制输出的内容到在线unicode转中文。

cbe41f8335d64a660ad9bc4e8926f0d7.png

成功了,原来是这样。

47045753092c8f74b668c45217992759.png

三、 转机

就在我打算先这么样的时候,一个朋友给出了一个方法。

谢谢 @程序员喜欢猫 的帮助,使用json 可以顺利的解析出中文,不用反复使用 在线unicode转中文 。 新的代码也放到下面:

05b0bb802c3b4b9428355ef5262a85a1.png

四、结果:

793b1184c9bf1edac7e5b3a51dba9825.png

很明显中文已经解析出来了,不用再去 在线unicode转中文 了, 完美,再次感谢 @程序员喜欢猫

五、再进一步

果然是方法总比问题多,经过 @程序员喜欢猫 的提醒,我想应该方法不止这些,又上网搜索了下,果然,也有小伙伴遇到这个问题,具体可见 https://www.zhihu.com/question/26921730于是现改进方法:

461580dc57f198a3d8d6c4ea63692566.png

六、效果:

3c5ddfcb948e01c45ec2bf12af63b5f1.png

注意:

这里需要注意的是, 如mailto1587 说的: 先检查text是什么类型如果 type(text)isbytes,那么 text.decode('unicode_escape')如果 type(text)isstr,那么 text.encode('latin-1').decode('unicode_escape')用这种方法可以不用引入 json , 理解起来更自然点。

七、后记:

这次的问题其实还是比较简单的,但是我们在做爬虫的过程中,这种问题层出不穷,怎么以简便快捷的方式处理问题就很重要了,但是在处理好问题后,我们还可以进一步研究,怎么才能做的更好,进步就再这一点点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值