详解用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字符串处理函数简明总结
Apr 13 Python
使用Python发送各种形式的邮件的方法汇总
Nov 09 Python
在Python中移动目录结构的方法
Jan 31 Python
Python数据类型详解(二)列表
May 08 Python
HTML中使用python屏蔽一些基本功能的方法
Jul 07 Python
Python 多线程Threading初学教程
Aug 22 Python
Python3安装Scrapy的方法步骤
Nov 23 Python
python 剪切移动文件的实现代码
Aug 02 Python
python for循环remove同一个list过程解析
Aug 14 Python
对Python 中矩阵或者数组相减的法则详解
Aug 26 Python
Anaconda配置pytorch-gpu虚拟环境的图文教程
Apr 16 Python
面向新手解析python Beautiful Soup基本用法
Jul 11 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
虫族 Zerg 魔法科技
2020/03/14 星际争霸
需要发散思维学习PHP
2009/06/29 PHP
把1316这个数表示成两个数的和,其中一个为13的倍数,另一个是11的倍数,求这两个数。
2011/06/24 PHP
完美解决PHP中的Cannot modify header information 问题
2013/08/12 PHP
一个经典实用的PHP图像处理类分享
2014/11/18 PHP
PHP进行批量任务处理不超时的解决方法
2016/07/11 PHP
PHP常用函数之格式化时间操作示例
2019/10/21 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
JavaScript CSS修改学习第六章 拖拽
2010/02/19 Javascript
在模板页面的js使用办法
2010/04/01 Javascript
基于jquery实现无限级树形菜单
2016/03/22 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
基于Angular.js实现的触摸滑动动画实例代码
2017/02/19 Javascript
js获取一组日期中最近连续的天数
2017/05/25 Javascript
JavaScript中的事件与异常捕获详析
2019/02/24 Javascript
vue实现微信分享链接添加动态参数的方法
2019/04/29 Javascript
JavaScript canvas实现雪花随机动态飘落
2020/02/08 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
Django在Win7下的安装及创建项目hello word简明教程
2014/07/14 Python
python统计文本文件内单词数量的方法
2015/05/30 Python
python3实现暴力穷举博客园密码
2016/06/19 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
python pytest进阶之conftest.py详解
2019/06/27 Python
Python使用Pandas库实现MySQL数据库的读写
2019/07/06 Python
python tqdm实现进度条的示例代码
2020/11/10 Python
区域销售经理职责
2013/12/22 职场文书
中学家长会邀请函
2014/01/17 职场文书
家长对小学生的评语
2014/01/28 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
2014年后备干部工作总结
2014/12/08 职场文书
协议书范文
2015/01/27 职场文书
2015年扫黄打非工作总结
2015/05/13 职场文书
地道战观后感500字
2015/06/04 职场文书
社区低保工作总结2015
2015/07/23 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书
Python+tkinter实现高清图片保存
2022/03/13 Python