详解用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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
详解python里使用正则表达式的分组命名方式
Oct 24 Python
浅谈python中的占位符
Nov 09 Python
python实现蒙特卡罗方法教程
Jan 28 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
Feb 13 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
Python Django框架单元测试之文件上传测试示例
May 17 Python
Python实现获取系统临时目录及临时文件的方法示例
Jun 26 Python
python全局变量引用与修改过程解析
Jan 07 Python
python pandas移动窗口函数rolling的用法
Feb 29 Python
Python使用shutil模块实现文件拷贝
Jul 31 Python
Matlab使用Plot函数实现数据动态显示方法总结
Feb 25 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不用递归实现无限分级的例子分享
2014/04/18 PHP
一组PHP加密解密函数分享
2014/06/05 PHP
PHP常用技巧汇总
2016/03/04 PHP
javascript整除实现代码
2010/11/23 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
ExtJs设置GridPanel表格文本垂直居中示例
2013/07/15 Javascript
jquery新的绑定事件机制on方法的使用方法
2014/04/15 Javascript
Node.js开源应用框架HapiJS介绍
2015/01/14 Javascript
JS拖拽组件学习使用
2016/01/19 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
简单谈谈json跨域
2016/03/13 Javascript
第十篇BootStrap轮播插件使用详解
2016/06/21 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
iview实现select tree树形下拉框的示例代码
2018/12/21 Javascript
详解Vue demo实现商品列表的展示
2019/05/07 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
vue限制输入框只能输入8位整数和2位小数的代码
2019/11/06 Javascript
解决vue v-for src 图片路径问题 404
2019/11/12 Javascript
浅谈python socket函数中,send与sendall的区别与使用方法
2017/05/09 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
python把转列表为集合的方法
2019/06/28 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
捷克母婴用品购物网站:Feedo.cz
2020/12/28 全球购物
什么是事务?事务有哪些性质?
2012/03/11 面试题
AJAX的全称是什么
2012/11/06 面试题
竞选卫生委员演讲稿
2014/04/28 职场文书
师德师风建设整改措施思想汇报
2014/10/11 职场文书
党支部四风整改方案
2014/10/25 职场文书
2014年机关党建工作总结
2014/11/11 职场文书
大足石刻导游词
2015/02/02 职场文书
销售内勤岗位职责
2015/02/10 职场文书
mysql5.7的安装及Navicate长久免费使用的实现过程
2021/11/17 MySQL
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js