python中HTMLParser模块知识点总结


Posted in Python onJanuary 25, 2021

本章内容,我们主要来讲一下Python内置的HTML解析库HTMLParser模块,基本上也是应用于页面抓取上,假设,我们需要去收集页面上已存在的静态链接,但是页面肯定代码量都非常大,并且页面也很多,这样看来,会比较麻烦,工作量也非常大,这个时候,我们就可以用到htmlparser模块,一起来了解具体使用内容。

安装:

npm install htmlparser

htmlparser提供构造函数:

function Parser(handler) {
  this._handler = handler;
}

HTMLParser解析HTML:

from html.parser import HTMLParser
from html.entities import name2codepoint
class MyHTMLParser(HTMLParser):
  def handle_starttag(self, tag, attrs):
    print('<%s>' % tag)
  def handle_endtag(self, tag):
    print('</%s>' % tag)
  def handle_startendtag(self, tag, attrs):
    print('<%s/>' % tag)
  def handle_data(self, data):
    print(data)
  def handle_comment(self, data):
    print('<!--', data, '-->')
  def handle_entityref(self, name):
    print('&%s;' % name)
  def handle_charref(self, name):
    print('&#%s;' % name)
parser = MyHTMLParser()
parser.feed('''<html>
<head></head>
<body>
<!-- test html parser -->
  <p>Some <a href=\"#\">html</a> HTML tutorial...<br>END</p>
</body></html>''')

HTML本质上是XML的子集,但是HTML的语法没有XML那么严格,大家也可以尝试利用HTMLParser解析HTML。

知识点扩展:

常用方法介绍

l feed(data):主要用于接受带html标签的str,当调用这个方法时并提供相应的data时,整个实例(instance)开始执行,结束执行close()。

l handle_starttag(tag, attrs): 这个方法接收Parse_starttag返回的tag和attrs,并进行处理,处理方式通常由使用者进行覆盖,本身为空。

例如,连接的start tag是<a>,那么对应的参数tag='a'(小写)。attrs是start tag <>中的属性,以元组形式(name, value)返回(所有这些内容都是小写)。

例如,对于<A HREF="http://www.baidu.com“>,那么内部调用形式为:handle_starttag('a',[(‘href','http://www.baidu.com)]).

l handle_endtag(tag):跟上述一样,只是处理的是结束标签,也就是以</开头的标签。

l handle_data(data):处理的是网页的数据,也就是开始标签和结束标签之间的内容。例如:<script>...</script>的省略号内容

l handle_comment(data) ,处理注释,<!-- -->之间的文本

l reset():将实例重置,包括作为参数输入的数据进行清空。

到此这篇关于python中HTMLParser模块知识点总结的文章就介绍到这了,更多相关python中HTMLParser模块是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

到此这篇关于python中HTMLParser模块知识点总结的文章就介绍到这了,更多相关python中HTMLParser模块是什么内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
在Linux下调试Python代码的各种方法
Apr 17 Python
Python聊天室实例程序分享
Jan 05 Python
深入剖析Python的爬虫框架Scrapy的结构与运作流程
Jan 20 Python
为什么入门大数据选择Python而不是Java?
Mar 07 Python
python调用百度REST API实现语音识别
Aug 30 Python
Python字典的核心底层原理讲解
Jan 24 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
pandas的排序和排名的具体使用
Jul 31 Python
Python中base64与xml取值结合问题
Dec 22 Python
Pycharm中切换pytorch的环境和配置的教程详解
Mar 13 Python
Python3 pyecharts生成Html文件柱状图及折线图代码实例
Sep 29 Python
使用tkinter实现三子棋游戏
Feb 25 Python
pycharm配置QtDesigner的超详细方法
Jan 25 #Python
Python扫描端口的实现
Jan 25 #Python
Python 将代码转换为可执行文件脱离python环境运行(步骤详解)
Jan 25 #Python
Python实现京东抢秒杀功能
Jan 25 #Python
Python Process创建进程的2种方法详解
Jan 25 #Python
使用python对excel表格处理的一些小功能
Jan 25 #Python
全网最详细的PyCharm+Anaconda的安装过程图解
Jan 25 #Python
You might like
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
PHP生成制作验证码的简单实例
2016/06/12 PHP
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
jquery 实现滚动条下拉时无限加载的简单实例
2016/06/01 Javascript
js获取元素的外链样式的简单实现方法
2016/06/06 Javascript
AngularJS基础 ng-keyup 指令简单示例
2016/08/02 Javascript
Angular2 环境配置详细介绍
2016/09/21 Javascript
javascript设置文本框光标的方法实例小结
2016/11/04 Javascript
老生常谈angularjs中的$state.go
2017/04/24 Javascript
vue滚动轴插件better-scroll使用详解
2017/10/17 Javascript
Vue.js实现图片的随意拖动方法
2018/03/08 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
Webpack按需加载打包chunk命名的方法
2019/09/22 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
[02:51]DOTA2 2015国际邀请赛中国区预选赛第一日战报
2015/05/27 DOTA
[01:08:56]DOTA2-DPC中国联赛 正赛 Magma vs LBZS BO3 第一场 2月7日
2021/03/11 DOTA
python 遍历字符串(含汉字)实例详解
2017/04/04 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
python挖矿算力测试程序详解
2019/07/03 Python
基于python requests selenium爬取excel vba过程解析
2020/08/12 Python
Python 实现二叉查找树的示例代码
2020/12/21 Python
Python调用系统命令os.system()和os.popen()的实现
2020/12/31 Python
viagogo法国票务平台:演唱会、体育比赛、戏剧门票
2017/03/27 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
法律专业学生的自我评价
2014/02/07 职场文书
师范毕业生求职信
2014/07/11 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
毕业实习感受与体会
2015/05/26 职场文书
用Python写一个简易版弹球游戏
2021/04/13 Python
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
JavaGUI模仿QQ聊天功能完整版
2021/07/04 Java/Android
SpringBoot整合Minio文件存储
2022/04/03 Java/Android