详解用Python处理HTML转义字符的5种方式


Posted in Python onDecember 27, 2017

写爬虫是一个发送请求,提取数据,清洗数据,存储数据的过程。在这个过程中,不同的数据源返回的数据格式各不相同,有 JSON 格式,有 XML 文档,不过大部分还是 HTML 文档,HTML 经常会混杂有转移字符,这些字符我们需要把它转义成真正的字符。

什么是转义字符

在 HTML 中 <、>、& 等字符有特殊含义(<,> 用于标签中,& 用于转义),他们不能在 HTML 代码中直接使用,如果要在网页中显示这些符号,就需要使用 HTML 的转义字符串(Escape Sequence),例如 < 的转义字符是 <,浏览器渲染 HTML 页面时,会自动把转移字符串换成真实字符。

转义字符(Escape Sequence)由三部分组成:第一部分是一个 & 符号,第二部分是实体(Entity)名字,第三部分是一个分号。 比如,要显示小于号(<),就可以写< 。

显示字符 说明 转义字符
小于
空格
小于
> 大于 >
& &符号 &
" 双引号 "
© 版权 ©
® 已注册商标 ®

Python 反转义字符串

用 Python 来处理转义字符串有多种方式,而且 py2 和 py3 中处理方式不一样,在 python2 中,反转义串的模块是 HTMLParser。

# python2
import HTMLParser
>>> HTMLParser().unescape('a=1&b=2')
'a=1&b=2'

Python3 HTMLParser 模块迁移到了 html.parser

# python3
>>> from html.parser import HTMLParser
>>> HTMLParser().unescape('a=1&b=2')
'a=1&b=2'

到 python3.4 以后的版本,在 html 模块新增了 unescape 方法。

# python3.4
>>> import html
>>> html.unescape('a=1&b=2')
'a=1&b=2'

推荐最后一种写法,因为 HTMLParser.unescape 方法在 Python3.4 就已经被废弃掉不推荐使用了,意味着之后的版本会被彻底移除。

另外,sax 模块也有支持反转义的函数

>>> from xml.sax.saxutils import unescape
>>> unescape('a=1&b=2')
'a=1&b=2'

当然,你完全可以实现自己的反转义功能,也不复杂,当然,我们崇尚不重复造轮子。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python二分法实现实例
Nov 21 Python
Python利用多进程将大量数据放入有限内存的教程
Apr 01 Python
详解Python的Flask框架中生成SECRET_KEY密钥的方法
Jun 07 Python
Python+OpenCV实现车牌字符分割和识别
Mar 31 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
Python绘图Matplotlib之坐标轴及刻度总结
Jun 28 Python
Python3使用PySynth制作音乐的方法
Sep 09 Python
python3.8 微信发送服务器监控报警消息代码实现
Nov 05 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
在python中计算ssim的方法(与Matlab结果一致)
Dec 19 Python
Python使用pdb调试代码的技巧
May 03 Python
Python中基础数据类型 set集合知识点总结
Aug 02 Python
Python中使用支持向量机(SVM)算法
Dec 26 #Python
Python中支持向量机SVM的使用方法详解
Dec 26 #Python
详解python中的 is 操作符
Dec 26 #Python
matplotlib简介,安装和简单实例代码
Dec 26 #Python
Python中xrange与yield的用法实例分析
Dec 26 #Python
Python简单计算数组元素平均值的方法示例
Dec 26 #Python
Python爬虫获取整个站点中的所有外部链接代码示例
Dec 26 #Python
You might like
Linux下ZendOptimizer的安装与配置方法
2007/04/12 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
JavaScript中的私有成员
2006/09/18 Javascript
JAVASCRIPT IE 与 FF中兼容问题小结
2009/02/18 Javascript
javascript parseInt 大改造
2009/09/27 Javascript
javascript 弹出层组件(升级版)
2011/05/12 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
JS函数重载的解决方案
2014/05/13 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
jQuery EasyUI Dialog拖不下来如何解决
2015/09/28 Javascript
javascript对象的创建和访问
2016/03/08 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
Node.js 异步异常的处理与domain模块解析
2017/05/10 Javascript
vue渲染时闪烁{{}}的问题及解决方法
2018/03/28 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
Layui 解决表格异步调用后台分页的问题
2019/10/26 Javascript
js实现秒表计时器
2019/12/16 Javascript
Vue 解决通过this.$refs来获取DOM或者组件报错问题
2020/07/28 Javascript
[48:02]Ti4循环赛第三日 VG vs Liquid和NEWBEE vs DK
2014/07/12 DOTA
python文件写入实例分析
2015/04/08 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Python模块汇总(常用第三方库)
2019/10/07 Python
详解python中*号的用法
2019/10/21 Python
从pandas一个单元格的字符串中提取字符串方式
2019/12/17 Python
Python中return函数返回值实例用法
2020/11/19 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
Puccini乌克兰:购买行李箱、女士手袋网上商店
2020/08/06 全球购物
会议接待欢迎词
2014/01/12 职场文书
公司营业员的自我评价
2014/03/04 职场文书
物业总经理助理岗位职责
2014/06/29 职场文书
社区文艺活动方案
2014/08/19 职场文书
万里长城导游词
2015/01/30 职场文书
结婚通知短信大全
2015/04/17 职场文书
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python