详解用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 的 with 语句详解
Jun 13 Python
python使用PyCharm进行远程开发和调试
Nov 02 Python
Python退火算法在高次方程的应用
Jul 26 Python
python将秒数转化为时间格式的实例
Sep 16 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
PYQT5实现控制台显示功能的方法
Jun 25 Python
python各层级目录下import方法代码实例
Jan 20 Python
Python 面向对象部分知识点小结
Mar 09 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
keras实现VGG16方式(预测一张图片)
Jul 07 Python
基于python实现复制文件并重命名
Sep 16 Python
Python 解决空列表.append() 输出为None的问题
May 23 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中取得URL的根域名的代码
2011/03/23 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
PHP Session机制简介及用法
2014/08/19 PHP
php操作redis缓存方法分享
2015/06/03 PHP
PHP结合Jquery和ajax实现瀑布流特效
2016/01/07 PHP
PHP+swoole实现简单多人在线聊天群发
2016/01/19 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
PHP实现上传图片到数据库并显示输出的方法
2018/05/31 PHP
如何在PHP中生成随机数
2020/06/04 PHP
textarea中的手动换行处理的jquery代码
2011/02/26 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
Jquery 跨域访问 Lightswitch OData Service的方法
2013/09/11 Javascript
JS实现的一个简单的Autocomplete自动完成例子
2014/04/16 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
使用HTML+CSS+JS制作简单的网页菜单界面
2015/07/27 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
从零学习node.js之express入门(六)
2017/02/25 Javascript
js表单序列化判断空值的实例
2017/09/22 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
2019/04/15 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
python中的字典详细介绍
2014/09/18 Python
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
python使用PyCharm进行远程开发和调试
2017/11/02 Python
Python3多线程操作简单示例
2018/05/22 Python
flask框架中勾子函数的使用详解
2018/08/01 Python
浅谈django三种缓存模式的使用及注意点
2018/09/30 Python
python集合能干吗
2020/07/19 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
python 如何读、写、解析CSV文件
2021/03/03 Python
Jogun Shop中文官网:韩国知名时尚男装网站
2016/10/12 全球购物
2014年党员创先争优承诺书
2014/05/29 职场文书
企业活动策划方案
2014/06/02 职场文书
2015年简历自我评价范文
2015/03/11 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
护士爱岗敬业心得体会
2016/01/25 职场文书
Python图像处理库PIL详细使用说明
2022/04/06 Python