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版本中)

from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):

def __init__(self):

HTMLParser.__init__(self)

self.links = []

def handle_starttag(self, tag, attrs):

#print "Encountered the beginning of a %s tag" % tag

if tag == "a":

if len(attrs) == 0:

pass

else:

for (variable, value) in attrs:

if variable == "href":

self.links.append(value)

if __name__ == "__main__":

html_code = """ google.com PythonClub Sina """

hp = MyHTMLParser()

hp.feed(html_code)

hp.close()

print(hp.links)

运行结果为:

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

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

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

from html.parser import HTMLParser

page ='''''啊啊啊京东商城

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

class hp(HTMLParser):

a_text = False

def handle_starttag(self,tag,attr):

if tag == 'a':

self.a_text = True

#print (dict(attr))

def handle_endtag(self,tag):

if tag == 'a':

self.a_text = False

def handle_data(self,data):

if self.a_text:

print (data)

yk = hp()

yk.feed(page)

yk.close()

运行结果如下:

京东商城

乐淘网上鞋城

拉手团购

亚马逊

凡客诚品

世纪佳缘

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

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

如果想抽取图形链接

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

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

HTMLParser是python用来解 析html的模块。它可以分析出html里面的标签、数据等等,是一种处理html的简便途径。 HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它主要的用户回调函数的命名都是以handler_开头的,都是HTMLParser的成员函数。当我们使用时,就从HTMLParser派生出新的类,然后重新定义这几个以handler_开头的函数即可。这几个函数包括:

handle_startendtag 处理开始标签和结束标签

handle_starttag 处理开始标签,比如

handle_endtag 处理结束标签,比如

handle_charref 处理特殊字符串,就是以开头的,一般是内码表示的字符

handle_entityref 处理一些特殊字符,以&开头的,比如

handle_data 处理数据,就是data中间的那些数据

handle_comment 处理注释

handle_decl 处理

handle_pi 处理形如<?instruction>的东西

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

  1. python写excel标记文字颜色_[知识积累]python3使用xlwt时写入文档字体颜色和边框样式--转载...

    可借鉴的网址:https://www.programcreek.com/python/example/39979/xlwt.Alignment 可以直接通过pip安装xlwt 个人理解: xlwt中对 ...

  2. python中正负号怎么表示_[转载]python中整数除法的正负号

    先看下面几个小题目:其中符号"//"表示除法结果的整数部分(即3/2=1.5,但3//2=1),"%"表示取余数. (1)7//3 和 7%3 的结果是什么? ...

  3. python如何查看有什么模块_在python中如何查看模块功能

    在python中查看模块功能的方法:1.在python命令行输入help()函数进入help帮助文档界面:2.键入[modules]列出当前所有安装的模块:3.键入相应的模块名称即可得到该模块的功能信 ...

  4. python怎样使用各个日期赤纬_基于Python的天文软件命令行界面设计与实现

    计算机软件技术的不断发展,推动了人机交互技术的长足进步.从传统的命令行(Command Line Interface,CLI),到图形用户界面(Graphical User Interface,GUI ...

  5. python可以做动漫吗_用Python做一个以图搜番的应用程序,再也不用愁动漫图片的出处了!...

    前言 喜欢看动漫的朋友们大概都能体会到一个难受的事情,就是在论坛或者群聊里面看到一张动漫截图,很想知道它的出处,但百度搜了一圈却也没有一个可靠结果,就很郁闷.今天就来带大家用Python做一个简单的& ...

  6. 计算机毕业设计Python+djang的小区疫情防控系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 随着信息化时代的到来,管理系统都趋向于智能化.系统化,居民小区疫情防控管理系统也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代 ...

  7. 计算机毕业设计Python+djang的图书馆图书借阅归还管理系统(源码+系统+mysql数据库+Lw文档)

    项目介绍 论文阐述了图书管理系统,并对该系统的需求分析及系统需要实现的设计方法作了介绍.该系统的基本功能包括读者登录,修改密码,读者管理,图书管理和借阅管理等功能,并且个个模块都包括了添加修改和删除和 ...

  8. 计算机毕业设计Python+django大学生闲置二手交易商城平台(源码+系统+mysql数据库+Lw文档)

    项目介绍 当前在市场经济的快速发展下,我国的经济形势也在不断的发展壮大.特别是在计算机信息化的普及下,新的互联网+业态促使着零售业在不断的转型发展.随着B2C.O2O的不断发展,传统的零售实体都受到了 ...

  9. java 解析word模板为xml, 动态填充数据到xml,最后输出word文档

    java 解析word模板为xml, 动态填充数据到xml,最后输出word文档 在项目中, 一开始是使用java Apache poi 根据word模板生成word报表, 后面发现框架有个低版本的p ...

最新文章

  1. 3G时代需要“移动云计算专业”
  2. 关于TCP和MQTT之间的转换
  3. 音视频编解码的国际标准
  4. Python基础教程:json中load和loads区别
  5. 有关手游设计ICON的几点建议
  6. document.body为null的问题
  7. sketch软件_因远程协作大火的Figma,到底有多好用,会取代Sketch的地位吗?
  8. nginx部署laravel需要修改的配置
  9. STM32 SPI NSS 作用
  10. 'display','position'和'float'相互关系
  11. HTML中禁用表单控件的两种方法readonly与disabled
  12. Rulo扫地机器人app_米家扫拖机器人1T测评|米家扫拖机器人1T的3D避障实际效果如何?...
  13. Visual Studio2017 配置OpenGL
  14. 【Ajax技术】JQuery的应用与高级调试技巧
  15. ”炮灰“团队自主开发,未参考任何Ftp搜索引擎代码,留个纪念。
  16. linux运行raxml,在线和本地两种方法构建 RAxML 进化树方法和解读
  17. 苹果开发者账号个人级升级为公司级
  18. ElementUI 中 栅格布局 混乱问题
  19. 国际结算名词解释汇总
  20. DC电源口实物VCC引脚和GND引脚

热门文章

  1. python制作图片数据集 h5py_python库——h5py入门讲解
  2. 详解淘客失败原因 用淘宝客还能赚到钱吗
  3. ADUM1201在隔离RS232中的应用
  4. (转)任务管理与职责管理
  5. GIT 创建分支并推到远程分支
  6. Mac 自带拼音输入法技巧
  7. 富兰克林自传 - 笔记
  8. 江苏省普通话水平测试计算机评分细则,苏州语言文字网--[江苏省普通话水平测试评分细则(试行)]...
  9. Augustus部署
  10. 【微信小程序】语音播报,文字转语音,使用《微信同声传译插件》