详解用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网络编程学习笔记(三):socket网络服务器
Jun 09 Python
python使用PyGame绘制图像并保存为图片文件的方法
Apr 24 Python
Python3.6 Schedule模块定时任务(实例讲解)
Nov 09 Python
Python实现获取前100组勾股数的方法示例
May 04 Python
python批量从es取数据的方法(文档数超过10000)
Dec 27 Python
由Python编写的MySQL管理工具代码实例
Apr 09 Python
详解【python】str与json类型转换
Apr 29 Python
使用Python画出小人发射爱心的代码
Nov 23 Python
tensorflow对图像进行拼接的例子
Feb 05 Python
pycharm通过ssh连接远程服务器教程
Feb 12 Python
python实现打砖块游戏
Feb 25 Python
如何搭建pytorch环境的方法步骤
May 06 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
解析php中heredoc的使用方法
2013/06/17 PHP
PHP的反射类ReflectionClass、ReflectionMethod使用实例
2014/08/05 PHP
php实现删除指定目录下相关文件的方法
2014/10/20 PHP
PHP获取QQ达人QQ信息的方法
2015/03/05 PHP
PHP设计模式之适配器模式代码实例
2015/05/11 PHP
Zend Framework教程之分发器Zend_Controller_Dispatcher用法详解
2016/03/07 PHP
PHP+JS实现的商品秒杀倒计时用法示例
2016/11/15 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
2018/08/21 PHP
PHP实现微信退款的方法示例
2019/03/26 PHP
早该知道的7个JavaScript技巧
2013/03/27 Javascript
JavaScript 创建运动框架的实现代码
2013/05/08 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
Jquery Validate 正则表达式实用验证代码大全
2013/08/23 Javascript
jQuery实现HTML5 placeholder效果实例
2014/12/09 Javascript
基于jQuery.Hz2Py.js插件实现的汉字转拼音特效
2015/05/07 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
js实现选项卡内容切换以及折叠和展开效果【推荐】
2017/01/08 Javascript
react-router v4如何使用history控制路由跳转详解
2018/01/09 Javascript
vue项目中实现缓存的最佳方案详解
2019/07/11 Javascript
ElementUI多个子组件表单的校验管理实现
2019/11/07 Javascript
vue 使用async写数字动态加载效果案例
2020/07/18 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
2020/07/22 Javascript
[03:48]2014DOTA2 TI专访71DK夺冠不靠小组赛高排名
2014/07/11 DOTA
Python函数中*args和**kwargs来传递变长参数的用法
2016/01/26 Python
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
用python实现将数组元素按从小到大的顺序排列方法
2018/07/02 Python
python中字典按键或键值排序的实现代码
2019/08/27 Python
web页面录屏实现
2019/02/12 HTML / CSS
东方电视购物:东方CJ
2016/10/12 全球购物
自荐信包含哪些内容
2013/10/30 职场文书
购房意向书范本
2014/04/01 职场文书
邹越感恩父母演讲稿
2014/08/28 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
社区领导班子四风问题原因分析及整改措施
2014/09/28 职场文书
2015教师个人师德工作总结
2015/10/23 职场文书
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技