详解用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通过urllib2爬网页上种子下载示例
Feb 24 Python
Python环境下搭建属于自己的pip源的教程
May 05 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
Python验证文件是否可读写代码分享
Dec 11 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
Python模块的加载讲解
Jan 15 Python
解决python线程卡死的问题
Feb 18 Python
利用python求积分的实例
Jul 03 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
python实现npy格式文件转换为txt文件操作
Jul 01 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
Sep 04 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预定义常量
2006/12/25 PHP
php的4种常用运行方式详解
2016/12/22 PHP
PDO::getAttribute讲解
2019/01/28 PHP
PHP中echo与print区别点整理
2021/03/09 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
javascript 从if else 到 switch case 再到抽象
2010/07/17 Javascript
超级好用的jQuery圆角插件 Corner速成
2014/08/31 Javascript
Bootstrap每天必学之轮播(Carousel)插件
2016/04/25 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
2016/06/02 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
JS Testing Properties 判断属性是否在对象里的方法
2017/10/01 Javascript
详解利用Angular实现多团队模块化SPA开发框架
2017/11/27 Javascript
js判断传入时间和当前时间大小实例(超简单)
2018/01/11 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
在vue中通过render函数给子组件设置ref操作
2020/11/17 Vue.js
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
Python 变量类型及命名规则介绍
2013/06/08 Python
python类:class创建、数据方法属性及访问控制详解
2016/07/25 Python
Python实现压缩与解压gzip大文件的方法
2016/09/18 Python
[原创]python爬虫(入门教程、视频教程)
2018/01/08 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
Python类的继承用法示例
2019/01/31 Python
使用opencv将视频帧转成图片输出
2019/12/10 Python
python实现修改固定模式的字符串内容操作示例
2019/12/30 Python
python实现word文档批量转成自定义格式的excel文档的思路及实例代码
2020/02/21 Python
通俗讲解python 装饰器
2020/09/07 Python
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
瑜伽服装品牌:露露柠檬(lululemon athletica)
2017/06/04 全球购物
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
计算机专业毕业生自荐信范文
2014/03/06 职场文书
2016年清明节期间群众祭祀活动工作总结
2016/04/01 职场文书
创业计划书之餐饮
2019/09/02 职场文书
Python的这些库,你知道多少?
2021/06/09 Python