python对含html转义字符编码(四)进行转换

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/diyiday/article/details/86497961

在抓取下来的网页源码显示的是如下的内容,而不是可读性的汉字

(当然,如果是在Web页面上展示,则实体会自动被浏览器转为原字符,正常显示)
经查资料后得知, 在网页中以四开头的是HTML实体,具体什么是HTML实体,

请百度:http://baike.baidu.com/view/4757776.htm

如何把汉字转换成HTML实体呢?

其实很简单,汉字的HTML实体由三部分组成,”&#+ASCII+;“ 即可。

Python中提供了一个模块:HTMLParser,里面有很多好用的方法,

我们可以使用:dir(HTMLParser.HTMLParser)查看该模块下的HTMLParser类属性,其中有一个方法:unescape(),

再使用:help(HTMLParser.HTMLParser.unescape),可以看到该方法的说明信息,但是几乎没什么用。其实该方法就是将HTML实体(带有&#符号打头的)进行解码,转换为原有字符。下面是简单实例:

<span style='font-size:7.0pt;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;
mso-bidi-font-family:Arial'>&#19978;&#28023;<spanclass=GramE>&#37329;&#34701;</span>&#26381;&#21153;&#26377;&#38480;&#20844;&#21496;</span><span>

以上的html代码含有unicode编码字符,使用HTMLParser可以轻松处理

import HTMLParser
def decodeHtml(input):
    h = HTMLParser.HTMLParser()
    s = h.unescape(input)
    return s

c = (含html转义字符的内容, 如需测试请自行粘贴)

print decodeHtml(c)

转换后

span style='font-size:7.0pt;mso-ascii-font-family:Arial;mso-hansi-font-family:Arial;mso-bidi-font-family:Arial'>上海<span class=GramE>金融</span>服务有限公司</span><span>

猜你喜欢

转载自blog.csdn.net/diyiday/article/details/86497961