Python HTMLParser模块解析html获取url实例


Posted in Python onApril 08, 2015

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>的东西

这里我以从网页中获取到url为例,介绍一下。要想获取到url,肯定是要分析<a>标签,然后取到它的href属性的值。下面是代码:

#-*- encoding: gb2312 -*-
import HTMLParser

class MyParser(HTMLParser.HTMLParser):
  def __init__(self):
    HTMLParser.HTMLParser.__init__(self)    
    
  def handle_starttag(self, tag, attrs):
    # 这里重新定义了处理开始标签的函数
    if tag == 'a':
      # 判断标签<a>的属性
      for name,value in attrs:
        if name == 'href':
          print value
    

if __name__ == '__main__':
  a = '<html><head><title>test</title><body><a href="http://www.163.com">链接到163</a></body></html>'
  
  my = MyParser()
  # 传入要分析的数据,是html的。
  my.feed(a)
Python 相关文章推荐
python实现文件分组复制到不同目录的例子
Jun 04 Python
Python编程实现二叉树及七种遍历方法详解
Jun 02 Python
Python3实现发送QQ邮件功能(html)
Dec 15 Python
Python实现的朴素贝叶斯分类器示例
Jan 06 Python
Python修改文件往指定行插入内容的实例
Jan 30 Python
python实现机器人卡牌
Oct 06 Python
手把手教你进行Python虚拟环境配置教程
Feb 03 Python
python圣诞树编写实例详解
Feb 13 Python
Python预测2020高考分数和录取情况
Jul 08 Python
python获取天气接口给指定微信好友发天气预报
Dec 28 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
Python Django / Flask如何使用Elasticsearch
Apr 19 Python
python内存管理分析
Apr 08 #Python
Python中关于字符串对象的一些基础知识
Apr 08 #Python
Python MySQLdb模块连接操作mysql数据库实例
Apr 08 #Python
python单例模式实例分析
Apr 08 #Python
在Docker上部署Python的Flask框架的教程
Apr 08 #Python
python threading模块操作多线程介绍
Apr 08 #Python
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
Apr 08 #Python
You might like
php简单封装了一些常用JS操作
2007/02/25 PHP
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
[原创]php token使用与验证示例【测试可用】
2017/08/30 PHP
php使用curl下载指定大小的文件实例代码
2017/09/30 PHP
PHP面向对象程序设计(OOP)之方法重写(override)操作示例
2018/12/21 PHP
javascript XML数据显示为HTML一例
2008/12/23 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
Knockout text绑定DOM的使用方法
2013/11/15 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
Bootstrap每天必学之缩略图与警示窗
2015/11/29 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
2016/05/26 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
详解如何使用Node.js编写命令工具——以vue-cli为例
2017/06/29 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
微信小程序登录时如何获取input框中的内容
2019/12/04 Javascript
Node中对非阻塞I/O、事件循环的知识点总结
2020/01/05 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
vue 判断两个时间插件结束时间必选大于开始时间的代码
2020/11/04 Javascript
[01:45]DOTA2新英雄“神谕者”全方位展示
2014/11/21 DOTA
python实现的简单FTP上传下载文件实例
2015/06/30 Python
简述Python中的进程、线程、协程
2016/03/18 Python
Python制作钉钉加密/解密工具
2016/12/07 Python
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
python处理csv中的空值方法
2018/06/22 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
2020/05/28 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
俄罗斯街头服装品牌:Black Star Wear
2017/03/01 全球购物
DERMAdoctor官网:美国著名皮肤护理品牌
2019/07/06 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
心理咨询承诺书
2014/05/20 职场文书
北京奥运会主题口号
2014/06/13 职场文书
不会写演讲稿,快来看看这篇文章!
2019/08/06 职场文书