原来可以这样中文转码

大家做爬虫时,是不是也遇到过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?可是中括号是什么鬼?

试着拿一个数试试,\u9500.

转码前.png

转码后.png

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

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

当然首选是pyhton, 上代码:

# coding=utf-8
from urllib import parse
import redef _change(matched):if matched.group(0) == "[":return '\\u'else:return ''def url_de(x):'''对URL进行解码'''replaceStr = re.sub(r'([\[|\]])', _change, parse.unquote(x))return replaceStrx = '''
%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
'''print(url_de(x))

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

输出:

第一次转码.png

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

转码.png

成功了,原来是这样。

中文.png

三、 转机

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

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

# coding=utf-8
from urllib import parse
import re
import jsondef _change(matched):if matched.group(0) == "[":return '\\u'else:return ''# 原来方法加上json.loadsdef url_de(x):'''对URL进行解码'''replaceStr = re.sub(r'([\[|\]])', _change, parse.unquote(x))return json.loads(f'"{replaceStr}"')# @程序员喜欢猫 提供的方法def func(string):string = parse.unquote(string)string = string.replace('[', '\\u').replace(']', '')return json.loads(f'"{string}"')x = 'http://www1.site.com:8888/WebReport/ReportServer?formlet=/test/[7efc][5408][5206][6790]/zonghexinxi_erji_yiyao_tuiguangbu--%5B9500%5D%5B552e%5D%5B6307%5D%5B6807%5D%5B5b8c%5D%5B6210%5D%5B7387%5D111.frm'
print('方法一:')
print(url_de(x))
print('方法二:')
print(func(x))

四、结果:

结果.png

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

五、再进一步

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

def url_de(x):'''对URL进行解码'''replaceStr = re.sub(r'([\[|\]])', _change, parse.unquote(x))return replaceStr.encode('latin-1').decode('unicode_escape')

六、效果:

输出.png

注意:

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

七、后记:

这次的问题其实还是比较简单的,但是我们在做爬虫的过程中,这种问题层出不穷,怎么以简便快捷的方式处理问题就很重要了,但是在处理好问题后,我们还可以进一步研究,怎么才能做的更好,进步就再这一点点。欢迎大家关注我的公众号 Python与跨境电商 一起讨论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/61840.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1.8 处理get请求浏览器中文转码问题

一、汉字在浏览器中会被转码,在接口自动化过程中,处理get接口就需要对接口中的汉字先进行转码 let url "http://test.com/api/key?name%E6%B5%8B%E8%AF%95&page1&pageSize11" let decode_url decodeURI(url) let url1 http://tes…

C# 与 TypeScript 之父带队开源 TypeChat

TypeChat 用模式工程取代了提示工程。 整理 | 王启隆 出品 | CSDN(ID:CSDNnews) 你“玩腻”聊天机器人了吗? 大模型的百家争鸣仍在持续。作为时代的开启者之一,微软近期热衷于推进各种整合计划,将 OpenAI 的…

高端啤酒正在失去年轻人

文|螳螂观察 作者| 青月 尽管奢侈品的外延近年来不断拓展,但大众从未想到过,奢侈品有一天会和啤酒挂上钩。 打开百威啤酒的天猫官方旗舰店,在“纯粹甄选”分类里有价格为218元/瓶的798ml“百威大师臻藏”。宣传海报里在强调是“大师礼遇”…

java 实现微信搜索附近人功能

最近给andorid做后台查询数据功能,有一个需求是模仿微信的查找附近人功能。 数据库中存储每个用户的经纬度信息及用户信息,通过当前用户传递过来的经纬度查询这个用户半径N公里以内的用户信息。 数据库表结构 表信息 表名Mobile_Usermu_id自增&#…

Louvain算法在反作弊上的应用

作者 | ANTI 一、概述 随着互联网技术的发展,人们享受互联网带来的红利的同时,也面临着黑产对整个互联网健康发展带来的危害,例如薅羊毛、刷单、刷流量/粉丝、品控、诈骗、快排等等,反作弊作为打击黑产的中坚力量,持…

艾永亮:酒瓶中的战争,谁是下一瓶被拿起的葡萄酒

1972年2月,美国总统尼克松访华。为庆祝中美关系破冰,尼克松特意从美国带来了干红葡萄酒,并开玩笑道:“中国很大,但缺少葡萄酒和时尚女性。” 47年后,你站在酒柜前,面对着琳琅满目又大同小异的葡…

基础实验5-2.2 电话聊天狂人(Map的使用+例题)

欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录) 文章字体风格: 红色文字表示:重难点 蓝色文字表示:思…

人员抽烟行为识别检测算法

人员抽烟行为识别检测系统基于YOLOv7 技术方法,对画面开展724h无间断分析。大大提升效率,减少了人力成本。YOLOv7 的发展方向与当前主流的实时目标检测器不同,研究团队希望它能够同时支持移动 GPU 和从边缘到云端的 GPU 设备。除了架构优化之…

程序员哥们儿在面试提问环节被挂了!

扫 码 带 你 走 进 程 序 员 的 欢 乐 源 泉 最近看到一张网友分享的聊天截图: 一程序员面完技术三面,最后面试官说很不错,面试通过了,问这个人还有什么问题,于是这位“耿直”程序员说:你们面试太简单了&am…

培训机构出来的同学背了这些面试题,拿了12K,把我给羡慕坏了

前言: 首先介绍一下我的同学,专科毕业应用电子技术专业,已经毕业快两年了。因为专业的原因工作一年觉得没什么发展前途就想转行,身为他的“好基友”,他觉得我这个工作挺好的,就咨询了我一下,经…

软件测试整套面试流程要注意这些事情,做好了真的能收到offer【建议收藏】

小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法…

面试施工员的时候你知道会问什么问题吗?

一、施工员常见面试题有哪些? 1、钢筋锚固长度的规定。 2、梁模板模起供高度。 3、混凝土道路施工有什么特别注意的地方吗? 4、施工现场用水量的计算依据。 5、外墙裂缝的产成原因? 6、你所知道的材料预控措施有哪些? 7、讲一讲你的工作经历,以前从事哪些项目的…

软件测试面试技巧 这么准备,拿下心仪offer不是问题

拥有一个心仪的offer,是每个软件测试工程师们都梦寐以求的事情,那如何才能通过最后的面试一关,拿到offer呢? 俗话说,知己知彼百战不殆,作为测试员,在面试前对面试官可能提出的问题进行总结和准…

软件测试面试话术 这样准备,让你成功拿到高薪offer

面试就是就是进入岗位前的临门一脚,如果因为准备不足而导致面试失败那可就亏大了!因此,为了帮助大家提高面试成功率,尽快拿到高薪offer,我为你们准备了一套面试话术以及技巧,希望对即将参加软件测试面试的你…

今天面试招了个18K的人,从腾讯出来的果然都有两把刷子···

公司前段时间缺人,也面了不少测试,前面一开始瞄准的就是中级的水准,也没指望来大牛,提供的薪资在15-20k,面试的人很多,但平均水平很让人失望。看简历很多都是4年工作经验,但面试中,不…

软件测试100%(打包票必问)面试题:介绍下你做过得项目、学会必拿offer

小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做软件测试的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法…

开学季,孩子们怎么学习?

(1)学习 我首先想告诉大家一下: 素质教育靠家庭知识教育学校技能教育靠自己 你想在学校里学到工作挣钱的本事,你想在企业里学到工作挣钱的本事,门儿都没有,这个大家要有清醒的认识。 一、小学学什么 小学其…

优秀期刊《儿童绘本》CN刊物征稿

《儿童绘本》 《儿童绘本》是由国家新闻出版管理部门批准,由吉林省舆林报刊发展有限责任公司主管主办,国内外公开发行的全国优秀期刊。国内统一连续出版物号CN 22-1406/J;国际标准连续出版物号ISSN 1673-954X 以“普及绘本知识,推…

steam/csgo搬砖靠谱吗?难做吗?

Steam-csgo搬砖难不难做?我告诉你并不难,任何行业都是入局简单,但是你先搞懂里面的思维逻辑,稳定利润的话就需要花点功夫~有两条路可走,一就是不断踩坑试错,用自身去换取经验。第二就是知识付费&#xff0c…

备战系统分析师——第2章经济管理部分

正在备考2023年5月底的软考--系统分析师。这次让我们聊一下第2章的经济管理部分。 首先是会计常识,这是我第一次接触会计知识,很多东西还是很新奇的。会计计价有两种方式,历史成本计价和公允价值计价,我理解历史成本计价就是在做会…