目的
在Html超文本中,有些字符会被转义字符代替,如空格、引号、大于号、小于号等等,爬虫爬取这些转义字符时,如果爬取的数据不用于前端展示,用于其他分析,那么这些转义字符有一定的干扰作用,因此这里将转义字符转换成实体字符。
参考
转换
1、对于Python2.7版本,采用HTMLParser中的unescape
In [5]: from HTMLParser import HTMLParser
In [6]: parse=HTMLParser()
In [7]: parse.unescape('"')
Out[7]: u'"'
2、对于Python3.4+版本,采用html中的unescape
In [1]: from html import unescape
In [2]: unescape('"')
Out[2]: '"'
注意
unescape会将一些空格符转换成‘\x’或者‘\u’的unicode编码方式。
对于这些如’\u3000、\xa0’等不可见的空格符,可以使用strip去除,如果不想去除,可以使用re.sub或者replace替换成” “。
In [2]: unescape(' ')
Out[2]: '\xa0'
In [3]: unescape('\xa0')
Out[3]: '\xa0'
In [4]: unescape(' ')
Out[4]: '\u2003'
In [5]: unescape('\u3000')
Out[5]: '\u3000'
In [6]: unescape('\u2020')
Out[6]: '†'
In [7]: '\u3000'.strip()
Out[7]: ''
In [8]: '\xa0'.strip()
Out[8]: ''不过对于爬虫来讲,一般会对这类空格符(如: 、 等等)自动转变成unicode的表达形式,但是对于其他转义字符不会处理。
最后
对于Python2.7版本就多记录了,毕竟都快放弃维护了,对于Python3中的html模块,之前都没有使用过这个模块,html只提供了两个函数:escape和unescape,unescape的功能上面已经实践了,escape的功能则是跟unescape相反,将实体字符转换成转义字符。