使用HTMLParser 解析html

python里面的HTMLParser解析html,跟c++和其他语言的html库解析不同,是使用类继承的方式。

通过重实现HTMLParser类的几个函数,来达到解析html的目的。

主要的重载的函数有:

handle_starttag #开始标签的解析

handle_endtag #结束标签的解析

handle_data     #标签内数据的解析

下面通过一个例子看学习下具体的使用(这个例子是python主页上的一个例子):

from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Encountered a start tag:", tag)
    def handle_endtag(self, tag):
        print("Encountered an end tag :", tag)
    def handle_data(self, data):
        print("Encountered some data  :", data)

parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'
            '<body><h1>Parse me!</h1></body></html>')

源html为:

<html>
 <head>
  <title>Test</title>
 </head>
 <body>
  <h1>Parse me!</h1>
 </body>
</html>

输出结果为:

Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h1
Encountered some data  : Parse me!
Encountered an end tag : h1
Encountered an end tag : body
Encountered an end tag : html

现在标签内容都能解析了。

总结:

1)继承HTMLParser类

class MYParser(HTMLParser):

2)def handle_starttag(self, tag, attrs) #重定义解析开始标签,tag为标签,attrs是标签的属性及属性值:是个dict

#这儿有一个例子,提取网页中的网址

3) def handle_endtag(self, tag): #重定义解析结束标签

4)def handle_data(self, data): #重定义解析数据

时间: 2024-12-18 14:30:59

使用HTMLParser 解析html的相关文章

使用 Python 模块&mdash;&mdash; HTMLParser 解析 HTML 文档元素

这个文档定义了一个 HTMLParser 类作为解析 HTML 文档的基础.HTMLParser 类的实例可以存储并调用方法来处理 HTML 标签和数据.我们一般通过建立一个 HTMLParser 的子类然后覆盖它的方法来实现我们想要的操作.HTMLParser 有很多方法,一般我们只需要覆盖下面几个方法: HTMLParser.handle_starttag(tag, attrs) #遇到一个开始标签时就会执行这个方法 #tag 是遇到的标签,attrs attrs是 (属性,值)元组(tup

用Objective-C HTMLParser解析HTML文档

代码:https://github.com/zootreeves/Objective-C-HMTL-Parser ? 戴维营教育代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 NSString *str = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://vip.astro.sin

python--爬虫入门(八)体验HTMLParser解析网页,网页抓取解析整合练习

python系列均基于python3.4环境  基本概念 html.parser的核心是HTMLParser类.工作的流程是:当你feed给它一个类似HTML格式的字符串时,它会调用goahead方法向前迭代各个标签,并调用对应的parse_xxxx方法提取start_tag,tag,data,comment和end_tag等等标签信息和数据,然后调用对应的方法对这些抽取出来的内容进行处理. 几个比较常用的: handle_startendtag #处理开始标签和结束标签 handle_star

在.net中运用HTMLParser解析网页的原理和方法

本文介绍了.net 版的一个HTMLParser网页解析开源类库(Winista.HTMLParser)的功能特性.工作原理和使用方法.对于使用.net进行Web信息提取的开发人员进行了一次HTMLParser的初步讲解.应用实例将会在日后的文中介绍,敬请关注. 一.背景知识 HTMLParser原本是一个在sourceforge上的一个Java开源项目,使用这个Java类库可以用来线性地或嵌套地解析HTML文本.他的功能强大和开源等特性吸引了大量Web信息提取的工作者.然而,许多.net开发者

[转载]python模块学习---HTMLParser(解析HTML文档元素)

转自:http://blog.csdn.net/hxsstar/article/details/17241709 HTMLParser是Python自带的模块,使用简单,能够很容易的实现HTML文件的分析. 本文主要简单讲一下HTMLParser的用法. 使用时需要定义一个从类HTMLParser继承的类,重定义函数:handle_starttag( tag, attrs)handle_startendtag( tag, attrs)handle_endtag( tag) 来实现自己需要的功能.

读代码之htmlParser

在以前使用HtmlParser时,并未考虑过遇到org.htmlparser.tags之外的Tag怎么处理.直到碰到这样的一个标签,如果不加处理,HtmlParser无法对其进行处理.查阅自定义标签之后才明白,控制HtmlParser解析网页结构的是,PrototypicalNodeFactory implements NodeFactory.每一种Tag都需要在NodeFactory中注册一下(registerTag()).默认注册org.htmlparser.tags中的所有Tag.如果有自

Python的Web编程[0] -&gt; Web客户端[1] -&gt; Web 页面解析

 Web页面解析 / Web page parsing 1 HTMLParser解析 下面介绍一种基本的Web页面HTML解析的方式,主要是利用Python自带的html.parser模块进行解析.其主要步骤为: 创建一个新的Parser类,继承HTMLParser类; 重载handler_starttag等方法,实现指定功能; 实例化新的Parser并将HTML文本feed给类实例. 完整代码 1 from html.parser import HTMLParser 2 3 # An HTML

python3解析库lxml

lxml是python的一个解析库,支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高 XPath,全称XML Path Language,即XML路径语言,它是一门在XML文档中查找信息的语言,它最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索 XPath的选择功能十分强大,它提供了非常简明的路径选择表达式,另外,它还提供了超过100个内建函数,用于字符串.数值.时间的匹配以及节点.序列的处理等,几乎所有我们想要定位的节点,都可以用XPath来选择 XPath

Python Xpath的解析,应用

目录 1.Xpath解析库介绍: 2.xpath语法 3.xpath代码演示 4.豆瓣案例 1. Xpath解析库介绍: # Xpath解析库介绍: 数据解析的过程中使用过正则表达式, 但正则表达式想要进准匹配难度较高, 一旦正则表达式书写错误, 匹配的数据也会出错. 网页由三部分组成: HTML, Css, JavaScript, HTML页面标签存在层级关系, 即DOM树, 在获取目 标数据时可以根据网页层次关系定位标签, 再获取标签的文本或属性. # xpath解析库解析数据原理: 1.