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 相关文章推荐
Python中的默认参数详解
Jun 24 Python
python实现的用于搜索文件并进行内容替换的类实例
Jun 28 Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 Python
pandas 转换成行列表进行读取与Nan处理的方法
Oct 30 Python
python3+PyQt5 实现Rich文本的行编辑方法
Jun 17 Python
PyTorch的深度学习入门教程之构建神经网络
Jun 27 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
python实现windows倒计时锁屏功能
Jul 30 Python
TensorFlow:将ckpt文件固化成pb文件教程
Feb 11 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
python3+openCV 获取图片中文本区域的最小外接矩形实例
Jun 02 Python
python正则表达式re.match()匹配多个字符方法的实现
Jan 27 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
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
php实例化一个类的具体方法
2019/09/19 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
非常好的js代码
2006/06/27 Javascript
捕获关闭窗口的脚本
2009/01/10 Javascript
Cookie 注入是怎样产生的
2009/04/08 Javascript
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
JavaScript 匿名函数(anonymous function)与闭包(closure)
2011/10/04 Javascript
关于JS字符串函数String.replace()
2013/04/07 Javascript
JS实现程序暂停与继续功能代码解读
2013/10/10 Javascript
jquery实现textarea输入框限制字数的方法
2015/01/15 Javascript
javascript每日必学之条件分支
2016/02/17 Javascript
拥Bootstrap入怀——导航栏篇
2016/05/30 Javascript
javascript history对象详解
2017/02/09 Javascript
vue2.0中vue-cli实现全选、单选计算总价格的实例代码
2017/07/18 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
python制作花瓣网美女图片爬虫
2015/10/28 Python
Python的装饰器用法学习笔记
2016/06/24 Python
Python实现的选择排序算法示例
2017/11/29 Python
快速查询Python文档方法分享
2017/12/27 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
Pyinstaller 打包exe教程及问题解决
2019/08/16 Python
OpenCV+python实现实时目标检测功能
2020/06/24 Python
房地产员工找工作的自我评价
2013/11/15 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
班组长岗位职责
2014/03/03 职场文书
个人自荐材料
2014/05/23 职场文书
安全横幅标语
2014/06/09 职场文书
学校领导干部民主生活会整改方案
2014/09/29 职场文书
拾金不昧感谢信
2015/01/21 职场文书
遗嘱范文
2015/08/07 职场文书
浅谈如何写好演讲稿?
2019/06/12 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python