HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析。

本文主要简单讲一下HTMLParser的用法.

使用时需要定义一个从类HTMLParser继承的类,重定义函数:
handle_starttag( tag, attrs)
handle_startendtag( tag, attrs)
handle_endtag( tag)

来实现自己需要的功能。

tag是的html标签,attrs是 (属性,值)元组(tuple)的列表(list)。
HTMLParser自动将tag和attrs都转为小写。

下面给出的例子抽取了html中的所有链接:(在PYTHON3.3版本中)

[python] view plaincopy
  1. from html.parser import HTMLParser
  2. class MyHTMLParser(HTMLParser):
  3. def __init__(self):
  4. HTMLParser.__init__(self)
  5. self.links = []
  6. def handle_starttag(self, tag, attrs):
  7. #print "Encountered the beginning of a %s tag" % tag
  8. if tag == "a":
  9. if len(attrs) == 0:
  10. pass
  11. else:
  12. for (variable, value) in attrs:
  13. if variable == "href":
  14. self.links.append(value)
  15. if __name__ == "__main__":
  16. html_code = """ <a href="www.google.com"> google.com</a> <A Href="www.pythonclub.org"> PythonClub </a> <A HREF = "www.sina.com.cn"> Sina </a> """
  17. hp = MyHTMLParser()
  18. hp.feed(html_code)
  19. hp.close()
  20. print(hp.links)

运行结果为:

['www.google.com', 'www.pythonclub.org', 'www.sina.com.cn']

---------------------------------------------

显示HTML中<a>标签之间的文字:

[python] view plaincopy
  1. from html.parser import HTMLParser
  2. page ='''''<sada>啊啊啊</sada><a href="http://click.union.360buy.com/JdClick /?unionId=75" class="f1"  style="padding-left:13px; padding-right:14px">京东商城</a></td><td><a href="http://www.letao.com /?source=hao123" class="f1">乐淘网上鞋城</a></td><td><a href="http://www.lashou.com/cl_today/w_3001" class="f2">拉手团购</a></td><td><a href="http://www.amazon.cn/?tag=2009hao123famousdaohang" class="f2">亚马逊</a></td><td><a href="http://www.vancl.com/?source=hao123mp"  class="f1">凡客诚品</a></td><td><a href="http://reg.jiayuan.com/st/?id=3237&url=/st /main.php" class="f1">世纪佳缘'''
  3. class hp(HTMLParser):
  4. a_text = False
  5. def handle_starttag(self,tag,attr):
  6. if tag == 'a':
  7. self.a_text = True
  8. #print (dict(attr))
  9. def handle_endtag(self,tag):
  10. if tag == 'a':
  11. self.a_text = False
  12. def handle_data(self,data):
  13. if self.a_text:
  14. print (data)
  15. yk = hp()
  16. yk.feed(page)
  17. yk.close()

运行结果如下:

京东商城
乐淘网上鞋城
拉手团购
亚马逊
凡客诚品
世纪佳缘

注:在eclipse中的pydev中调试,记得中文编码问题,在项目中右键改编码为utf-8

----------------------------------------------------------------

如果想抽取图形链接

<img src='http://www.google.com/intl/zh-CN_ALL/images/logo.gif' />

就要重定义 handle_startendtag( tag, attrs) 函数

----------------------------------------------------------------

HTMLParser是Python用来解 析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。 HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它主要的用户回调函数的命名都是以handler_开头的,都是HTMLParser的成员函数。当我们使用时,就从HTMLParser派生出新的类,然后重新定义这几个以handler_开头的函数即可。这几个函数包括:
handle_startendtag 处理开始标签和结束标签
handle_starttag 处理开始标签,比如<xx>
handle_endtag 处理结束标签,比如</xx>
handle_charref 处理特殊字符串,就是以&#开头的,一般是内码表示的字符
handle_entityref 处理一些特殊字符,以&开头的,比如  
handle_data 处理数据,就是<xx>data</xx>中间的那些数据
handle_comment 处理注释
handle_decl 处理<!开头的,比如<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
handle_pi 处理形如<?instruction>的东西

python模块学习---HTMLParser(解析HTML文档元素)相关推荐

  1. python解析html用哪个模块_[转载]python模块学习---HTMLParser(解析HTML文档元素)

    HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. 使用时需要定义一个从类HTMLParser继承的类,重定义 ...

  2. python 解析html 模块_使用 Python 模块—— HTMLParser 解析 HTML 文档元素

    标签: 这个文档定义了一个 HTMLParser 类作为解析 HTML 文档的基础. HTMLParser 类的实例可以存储并调用方法来处理 HTML 标签和数据. 我们一般通过建立一个 HTMLPa ...

  3. Python爬虫 —— 使用BeautifulSoup4解析HTML文档

    Python爬虫 -- 使用BeautifulSoup4解析HTML文档 目录 Python爬虫 -- 使用BeautifulSoup4解析HTML文档 1.BeautifulSoup4简介 1.1 ...

  4. python之HTMLParser解析HTML文档

    HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. 使用时需要定义一个从类HTMLParser继承的类,重定义 ...

  5. 火狐浏览器 xml 解析错误:文档元素后存有无效内容_五分钟了解浏览器工作原理...

    作者简介: 李中凯 八年多工作经验 前端负责人, 擅长JavaScript/Vue. 掘金文章专栏:KaysonLi 的个人主页 - 专栏 - 掘金 Web 浏览器无疑是用户访问互联网最常见的入口.浏 ...

  6. python xml实例_python解析xml文档实例

    博客已迁移  新地址 打开 ======================= 今天恰好用到,记录一下 使用python 用到的包:xml.dom.minidom 需求: 有一个表,里面数据量比较大,每天 ...

  7. python的html模块,python模块之HTMLParser

    HTMLParser是python用来解析html的模块.它可以分析出html里面的标签.数据等等,是一种处理html的简便途径. HTMLParser采用的是一种事件驱动的模式,当HTMLParse ...

  8. XML文档定义有几种方式?它们之间有何本质区别?解析XML文档有哪几种方式?

    XML文档定义方式:有两种定义形式,dtd文档类型定义和schema模式 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的) 普通区别: 1.s ...

  9. Dom4j 解析Xml文档及 XPath查询 学习笔记

    2019独角兽企业重金招聘Python工程师标准>>> 本文查阅方法:     1.查阅目录 -- 查阅本文目录,确定想要查阅的目录标题     2.快捷"查找" ...

最新文章

  1. 实时把你的脸变成名画,手机摄像头新玩法
  2. FLEX是什么及与FLASH的关系的介绍
  3. 零元学Expression Blend 4 - Chapter 40 Flash做的到的Blend也可以!轻松制作拥有动画的MenuBar!(上)...
  4. 口的内存映射 stm32f7_STM32F7高速缓存
  5. 指针和引用的区别_浅析指针与引用
  6. 归档日志 delete input 和delete all input 区别
  7. can收发器 rx_CANOpen系列教程03 _CAN收发器功能、原理及作用
  8. git如何查看缓存区文件内容_详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别...
  9. 搞笑日常:有位程序员的老爸是个什么感觉?过程你绝对意想不到!
  10. 计算机视觉 滑动窗方法,图像分割相关技术之滑动窗口、RPN以及anchor box简介
  11. 中山大学提出新型行人重识别方法和史上最大评测基准
  12. Httpclient远程调用WebService示例
  13. Java网络编程之客户端中的Socket
  14. 全志A40I tina系统蓝牙wifi调试方法
  15. 利用python构建信用卡评分
  16. 系统自带测试软件,无需鲁大师检测!Windows自带工具检查系统健康度
  17. 一起来学k8s 37.二进制k8s集群etcd备份和恢复
  18. 你真的会写for循环吗?来看看这些常见的for循环优化方式
  19. 【解决】Failed to process import candidates for configuration class [cn.itcast.eureka.EurekaApplication]
  20. Java的加减乘除方法

热门文章

  1. 计算机史最疯狂一幕:豪赌50亿美元,“蓝色巨人”奋身一跃
  2. ​横扫六大权威榜单后,达摩院开源深度语言模型体系 AliceMind
  3. 一学就会的 Python 时间转化总结(超全)
  4. IDC公布中国深度学习市场综合份额:百度超越Facebook位列第二
  5. 人工智能技术在内容行业的应用:AI对中长尾内容平台还是奢侈品
  6. “不设边界”的云知声:从多场景AI芯片到视觉AI,誓要2019营收近3倍
  7. 云计算赋能人工智能,未来的红利在哪?
  8. 基于Python的自动特征工程——教你如何自动创建机器学习特征
  9. 从FPN到Mask R-CNN,一文告诉你Facebook的计算机视觉有多强
  10. 工作10年后,再看String s = new String(xyz) 创建了几个对象?