写爬虫是一个发送请求,提取数据,清洗数据,存储数据的过程。在这个过程中,不同的数据源返回的数据格式各不相同,有 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处理HTML转义字符的5种方式

本文地址: http://www.cppcns.com/jiaoben/python/215905.html

python使用什么作为转义字符-详解用Python处理HTML转义字符的5种方式相关推荐

  1. python怎么导入文件-Python文件如何引入?详解引入Python文件步骤

    python基本语法--引入Python文件 1.新建python文件 :在同目录lib下创建mylib.py和loadlib.py两个文件 2.在mylib.py文件中创建一个Hello的类 并且给 ...

  2. java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式

    java相关:详解Spring加载Properties配置文件的四种方式 发布于 2020-4-29| 复制链接 摘记: 一.通过 context:property-placeholder 标签实现配 ...

  3. linux 查看网络流量来源_详解Linux查看实时网卡流量的几种方式

    在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查看Linux服务器的实时网卡流量. 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众 ...

  4. java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较

    1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...

  5. python编程入门与案例详解-quot;Python小屋”免费资源汇总(截至2018年11月28日)...

    原标题:"Python小屋"免费资源汇总(截至2018年11月28日) 为方便广大Python爱好者查阅和学习,特整理汇总微信公众号"Python小屋"开通29 ...

  6. python编写数据库连接工具_详解使用Python写一个向数据库填充数据的小工具(推荐)...

    一. 背景 公司又要做一个新项目,是一个合作型项目,我们公司出web展示服务,合作伙伴线下提供展示数据. 而且本次项目是数据统计展示为主要功能,并没有研发对应的数据接入接口,所有展示数据源均来自数据库 ...

  7. python main传参args,详解用Python处理Args的3种方法

    1. sys 模块 Python 中的 sys 模块具有 argv 功能.当通过终端触发 main.py 的执行时,此功能将返回提供给 main.py 的所有命令行参数的列表.除了其他参数之外,返回列 ...

  8. python zxing 识别条码_详解利用python识别图片中的条码(pyzbar)及条码图片矫正和增强...

    前言 这周和大家分享如何用python识别图像里的条码.用到的库可以是zbar.希望西瓜6辛苦码的代码不要被盗了.(zxing的话,我一直没有装好,等装好之后再写一篇) 具体步骤 前期准备 用open ...

  9. python解释器在哪里_详解查看Python解释器路径的两种方式

    进入python的安装目录, 查看python解释器 进入bin目录 # ls python(看一下是否有python解释器版本) # pwd (查看当前目录) 复制当前目录即可 1. 通过脚本查看 ...

最新文章

  1. 191127注意事项
  2. hdu4911 简单树状数组
  3. 平均分组 java_java – 按属性分组对象列表,并计算每个对象的对象属性的平均值...
  4. 【报错】ValueError: not enough values to unpack expected 2, got1
  5. mysql left join 索引失效_MySQL索引列上做操作导致索引失效案例分析
  6. 排序(Sort)--【一】
  7. springboot profile_SpringBoot简单配置
  8. C/C++语言里的near和far是什么意思?
  9. 计算机系统结构自学试卷,全国2004年4月高等教育自学考试计算机系统结构试题...
  10. Eclipse主题设置
  11. Nginx工作原理及基本使用
  12. AD9的PCB技巧——CAD的导入
  13. Golang - Structs 包的使用
  14. 软件项目开发各阶段文档模板(参考)
  15. 用java写新年快乐特效代码_蓝叶分享新年快乐大红灯笼特效代码
  16. 可视化大屏自适应效果
  17. Remove or reset file passwords in Office 2013
  18. c语言编程实现简单三子棋游戏
  19. python实现酷狗音乐下载,以及利用tk界面可视化
  20. 利用switch实现春夏秋冬

热门文章

  1. JavaScript面向对象的支持(7)
  2. 43 | 发挥人的潜能:探索式测试
  3. 201771010106东文财《面向对象程序设计(java)》实验12
  4. spring之Environment
  5. Angular2 富文本编辑器 ng2-ckeditor 的使用
  6. 预编译、作用域链和闭包理解
  7. Appstate的几种状态及在android 和ios触发
  8. ASP.NET环境下配置FCKEditor并上传图片及其它文件
  9. mac os x 安装 wireshark 的问题
  10. MySQL 5.6.6 LABS 版本 下载 已经内含 Memcached