版权声明:未经本人同意不得转载! https://blog.csdn.net/yanpenggong/article/details/83279404
问题阐述
爬取网页时,正常情况下python3中能直接转化为utf-8,即所谓的汉字能够正常显示。所以即使网页中显示的是这种escape sequence,获取到之后能够显示正常,但是偶尔也不好使,不好使的情况下就会出现以下的charref状态:
明威把
解决方法
In [1]: from html.parser import HTMLParser
In [2]: HTMLParser().unescape("明威把")
Out[2]: '明威把'
原因解释
HtmlParser,顾名思义,是解析Html的一个工具。python自带的。
一、常用属性和方法介绍
HtmlParser是一个类,在使用时一般继承它然后重载它的方法,来达到解析出需要的数据的目的。
1.常用属性:
lasttag,保存上一个解析的标签名,是字符串。
2.常用方法:
handle_starttag(tag, attrs) ,处理开始标签,比如<div>
;这里的attrs获取到的是属性列表,属性以元组的方式展示
handle_endtag(tag) ,处理结束标签,比如</div>
handle_startendtag(tag, attrs) ,处理自己结束的标签,如<img />
handle_data(data) ,处理数据,标签之间的文本
handle_comment(data) ,处理注释,<!-- -->
之间的文本
如果我们要编写一个搜索引擎,第一步是用爬虫把目标网站的页面抓下来,第二步就是解析该HTML页面,看看里面的内容到底是新闻、图片还是视频。
假设第一步已经完成了,第二步应该如何解析HTML呢?
HTML本质上是XML的子集,但是HTML的语法没有XML那么严格,所以不能用标准的DOM或SAX来解析HTML。
好在Python提供了HTMLParser来非常方便地解析HTML