ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

记录一个神奇的编码

2020-05-03 19:03:07  阅读:286  来源: 互联网

标签:编码 x35 记录 &# unicode escape 解析 神奇


本篇文章很短,只是作为一个小技巧分享

 

今天在分析某网站的时候,遇到一个神奇的编码,如下

 

13555555555

 

 

不管我怎么搞都解码不出来,查了下,说的是在 Node 层利用 cheerio 解析网页时,输出的中文内容都是以 &#x 开头的一堆像乱码一样的东西,尝试过各种编码都无效,而且神奇的是,将这一堆“乱码”保存成网页后,通过浏览器打开又可以正常显示,凭我多年的爬虫分析经验来看,这应该就是我要的东西,并不是随机生成的,想了很久,我突然想起了一种html的页码表现形式,有没有觉得很像那种html的特征码,比如 空格就是     以上的数据,格式是是不是非常像

 

搜了下,说的是这种形式是numeric character reference,数字取值为目标字符的 Unicode code point;以「&#」开头的后接十进制数字,「&#x」开头的后接十六进制数字。

从 HTML4 开始,numeric character reference 以 Unicode 为准,与文档编码无关。

 

我突然想起,之前遇到过一个网站,他的数据就是这样的,用lxml库里的fromtring就可以解析出来

 

于是:

 

 

 

 

from lxml.html import formstring
s = '13555555555'
print(fromstring(s).text)

'13555555555'

 

 

后面发现,其实还有一种方法可以解决:

 

 

 

 

s = '13555555555'
k = s.replace(';', '').replace('&#x', r'\u00').encode('utf-8').decode('unicode-escape')
pirnt(k)
# '13555555555'

  

 

unicode-escape和unicode是同级别的一种字符集,但是很少用,针对一些特殊情况时会用,其实还有string-escape,其实这两个我搜了下资料,感觉看了跟没看一样,我写这个博客的5分钟以前看了的,我现在都忘了说的啥了,反正说白了就是在解析一些数据无法正常解析时,就可以使用unicode-escape

 

顺便一说,在解析时的编码,如果utf-8,gbk,gb2312都无法解析,可以用gb18030解码

 

标签:编码,x35,记录,&#,unicode,escape,解析,神奇
来源: https://www.cnblogs.com/Eeyhan/p/12822979.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有