Python:处理HTML转义字符的5种方式

整理网页数据的时候必然存在特殊含义符号的转义问题。

对某些数据清理操作造成了影响。

运行环境 Runtime environment

1
2
3
操作系统: Windos10  
IDE: JetBrains Pycharm 2020.2.4 x64
语言: Python 3.7.4

背景

整理网页数据的时候必然存在特殊含义符号的转义问题。

对某些数据清理操作造成了影响。

写爬虫是一个发送请求,提取数据,清洗数据,存储数据的过程。

在这个过程中,不同的数据源返回的数据格式各不相同,

有 JSON 格式,有 XML 文档,不过大部分还是 HTML 文档,HTML 经常会混杂有转移字符,

这些字符我们需要把它转义成真正的字符。

什么是转义字符

1
2
3
4
在 HTML 中 <、>、& 等字符有特殊含义(<,> 用于标签中,& 用于转义),
它们不能在 HTML 代码中直接使用,如果要在网页中显示这些符号,
就需要使用 HTML 的转义字符串(Escape Sequence),
例如 < 的转义字符是 &lt;,浏览器渲染 HTML 页面时,会自动把转移字符串换成真实字符。

Python 反转义字符串

  • python2

    用 Python 来处理转义字符串有多种方式,而且 py2 和 py3 中处理方式不一样,
    在 python2 中,反转义串的模块是 HTMLParser。
    什么年代了还用python2,转行吧

    1
    2
    3
    4
    import HTMLParser
    HTMLParser().unescape('&amp;dn=')

    '&dn='
  • python3

    Python3 把 HTMLParser 模块迁移到 html.parser

    1
    2
    3
    4
    from html.parser import HTMLParser
    HTMLParser().unescape('&amp;dn=')

    '&dn='
到 python3.4 之后的版本,在 html 模块新增了 unescape 方法

1
2
3
4
import html
html.unescape('&amp;dn=')

'&dn='
推荐最后一种写法, 因为 HTMLParser.unescape 方法在 Python3.4 就已经被废弃掉不推荐使用, 意味着之后的版本有可能会被彻底移除。

总结

html处理前先把转义符处理一下,就能尽可能少的避免一些清洗错误。

正则表达式也精简了。

×

也就放着玩的

扫码支持
扫码打赏,其实感觉也没人会给的。。

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. 运行环境 Runtime environment
  • 背景
  • 什么是转义字符
  • Python 反转义字符串
  • 总结
  • ,