详解用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实现数通设备tftp备份配置文件示例
Apr 02 Python
Python中的map、reduce和filter浅析
Apr 26 Python
从CentOS安装完成到生成词云python的实例
Dec 01 Python
Python yield与实现方法代码分析
Feb 06 Python
python实现linux下抓包并存库功能
Jul 18 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
Jan 17 Python
python的schedule定时任务模块二次封装方法
Feb 19 Python
使用python-opencv读取视频,计算视频总帧数及FPS的实现
Dec 10 Python
浅谈tensorflow中张量的提取值和赋值
Jan 19 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
Python+腾讯云服务器实现每日自动健康打卡
Dec 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
9个PHP开发常用功能函数小结
2011/07/15 PHP
PHP 微信支付类 demo
2015/11/30 PHP
大家须知简单的php性能优化注意点
2016/01/04 PHP
yii2 页面底部加载css和js的技巧
2016/04/21 PHP
PHP简单实现文本计数器的方法
2016/04/28 PHP
在IE和VB中支持png图片透明效果的实现方法(vb源码打包)
2011/04/01 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
JS实现侧悬浮浮动实例代码
2013/11/29 Javascript
js窗口关闭提示信息(兼容IE和firefox)
2015/10/23 Javascript
jquery validate demo 基础
2015/10/29 Javascript
js仿3366小游戏选字游戏
2016/04/14 Javascript
浅谈JavaScript 浏览器对象
2016/06/03 Javascript
Bootstrap滚动监听组件scrollspy.js使用方法详解
2017/07/20 Javascript
浅谈Vue.nextTick 的实现方法
2017/10/25 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
2018/03/16 Javascript
node.js部署之启动后台运行forever的方法
2018/05/23 Javascript
Webpack中雪碧图插件使用详解
2018/05/25 Javascript
Vue props用法详解(小结)
2018/07/03 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
bootstrap Table实现合并相同行
2019/07/19 Javascript
JS函数基本定义与用法示例
2020/01/15 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
浅谈Python中函数的参数传递
2016/06/21 Python
python中的文件打开与关闭操作命令介绍
2018/04/26 Python
Python实现字符型图片验证码识别完整过程详解
2019/05/10 Python
使用python代码进行身份证号校验的实现示例
2019/11/21 Python
python读写文件write和flush的实现方式
2020/02/21 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
CSS3 2D模拟实现摩天轮旋转效果
2016/11/16 HTML / CSS
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
英国票务网站:Ticketmaster英国
2018/08/27 全球购物
奥林匹克的口号
2014/06/13 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
党支部季度考核意见
2015/06/02 职场文书
详解Golang如何优雅的终止一个服务
2022/03/21 Golang