详解用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中的URLError异常的方法
Apr 30 Python
pycharm远程调试openstack代码
Nov 21 Python
tensorflow 使用flags定义命令行参数的方法
Apr 23 Python
Python生成器的使用方法和示例代码
Mar 04 Python
Python使用psutil获取进程信息的例子
Dec 17 Python
Python 实现Serial 与STM32J进行串口通讯
Dec 18 Python
Selenium元素定位的30种方式(史上最全)
May 11 Python
python安装和pycharm环境搭建设置方法
May 27 Python
Python几种常见算法汇总
Jun 02 Python
Node.js 和 Python之间该选择哪个?
Aug 05 Python
python中numpy数组与list相互转换实例方法
Jan 29 Python
Python基础之进程详解
May 21 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中使用Oracle数据库(3)
2006/10/09 PHP
php读取数据库信息的几种方法
2008/05/24 PHP
利用PHP将部分内容用星号替换
2020/04/21 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
php7 安装yar 生成docker镜像
2017/05/09 PHP
创建无限极分类树型结构的简单方法
2017/06/20 PHP
详解php伪造Referer请求反盗链资源
2019/01/24 PHP
IE和Firefox下event事件杂谈
2009/12/18 Javascript
了解jQuery技巧来提高你的代码(个人觉得那个jquery的手册很不错)
2012/02/10 Javascript
js写的评论分页(还不错)
2013/12/23 Javascript
js HTML5多图片上传及预览实例解析(不含前端的文件分割)
2016/08/26 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
js 只比较时间大小的实例
2017/10/26 Javascript
微信小程序第三方框架对比 之 wepy / mpvue / taro
2019/04/10 Javascript
详解vue中$nextTick和$forceUpdate的用法
2019/12/11 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
python使用心得之获得github代码库列表
2014/06/25 Python
python获取局域网占带宽最大3个ip的方法
2015/07/09 Python
Python深度优先算法生成迷宫
2018/01/22 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
2018/04/02 Python
pandas or sql计算前后两行数据间的增值方法
2018/04/20 Python
python下的opencv画矩形和文字注释的实现方法
2019/07/09 Python
Python使用lambda表达式对字典排序操作示例
2019/07/25 Python
吃透移动端 Html5 响应式布局
2019/12/16 HTML / CSS
Vivo俄罗斯官方在线商店:中国智能手机品牌
2019/10/04 全球购物
求职信范文怎么写
2014/01/29 职场文书
计算机专业求职信
2014/06/02 职场文书
计算机求职信
2014/07/02 职场文书
项目申报专员岗位职责
2014/07/09 职场文书
2014年世界艾滋病日宣传活动总结
2014/11/18 职场文书
2014年医务科工作总结
2014/12/18 职场文书
校园安全教育心得体会
2016/01/15 职场文书
股东出资协议书
2016/03/21 职场文书
MySQL创建索引需要了解的
2021/04/08 MySQL