详解用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中easy_install 和 pip 的安装及使用
Jun 05 Python
Python 3实战爬虫之爬取京东图书的图片详解
Oct 09 Python
Python实现pdf文档转txt的方法示例
Jan 19 Python
python数据分析数据标准化及离散化详解
Feb 26 Python
Python 调用 zabbix api的方法示例
Jan 06 Python
python求质数列表的例子
Nov 24 Python
pandas中read_csv的缺失值处理方式
Dec 19 Python
Python解释器以及PyCharm的安装教程图文详解
Feb 26 Python
Python semaphore evevt生产者消费者模型原理解析
Mar 18 Python
Python requests模块cookie实例解析
Apr 14 Python
拒绝盗图!教你怎么用python给图片加水印
Jun 04 Python
用python基于appium模块开发一个自动收取能量的小助手
Sep 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实现数据库的增删改查
2017/02/26 PHP
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
JavaScript自动设置IFrame高度的小例子
2013/06/08 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
2015/07/27 Javascript
ANGULARJS中使用JQUERY分页控件
2015/09/16 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
12 款 JS 代码测试必备工具(翻译)
2016/12/13 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
基于jQuery对象和DOM对象和字符串之间的转化实例
2017/08/08 jQuery
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
js构造函数创建对象是否加new问题
2018/01/22 Javascript
Vue实现动态添加或者删除对象和对象数组的操作方法
2018/09/21 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
浅谈Python对内存的使用(深浅拷贝)
2018/01/17 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
Python脚本按照当前日期创建多级目录
2019/03/01 Python
python实现爬山算法的思路详解
2019/04/09 Python
Pycharm运行加载文本出现错误的解决方法
2019/06/27 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
Python阶乘求和的代码详解
2020/02/14 Python
在Matplotlib图中插入LaTex公式实例
2020/04/17 Python
基于python 将列表作为参数传入函数时的测试与理解
2020/06/05 Python
python利用os模块编写文件复制功能——copy()函数用法
2020/07/13 Python
Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作
2021/03/03 Python
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
一级方程式赛车官方网上商店:F1 Store(支持中文)
2018/01/12 全球购物
Casetify官网:自制专属手机壳、iPad护壳和Apple Watch手表带
2018/05/09 全球购物
大学四年学习的自我评价分享
2013/12/09 职场文书
大学生英语演讲稿
2014/04/24 职场文书
Python+pyaudio实现音频控制示例详解
2022/07/23 Python