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的*args和**kwargs用法
Nov 01 Python
python3生成随机数实例
Oct 20 Python
Python 正则表达式(转义问题)
Dec 15 Python
Python中优化NumPy包使用性能的教程
Apr 23 Python
Python操作MongoDB数据库PyMongo库使用方法
Apr 27 Python
利用python将json数据转换为csv格式的方法
Mar 22 Python
Python的iOS自动化打包实例代码
Nov 22 Python
Python 实现try重新执行
Dec 21 Python
python kafka 多线程消费者&amp;手动提交实例
Dec 21 Python
Python坐标轴操作及设置代码实例
Jun 04 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
使用numpy nonzero 找出非0元素
May 14 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重新实现PHP脚本引擎内置函数
2007/03/06 PHP
php中文本操作的类
2007/03/17 PHP
深入PHP内存相关的功能特性详解
2013/06/08 PHP
PHP模块memcached使用指南
2014/12/08 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
Laravel-添加后台模板AdminLte的实现方法
2019/10/08 PHP
激活 ActiveX 控件
2006/10/09 Javascript
动态表格Table类的实现
2009/08/26 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
E3 tree 1.6在Firefox下显示问题的修复方法
2013/01/30 Javascript
ie8 不支持new Date(2012-11-10)问题的解决方法
2013/07/31 Javascript
javascript实现瀑布流加载图片原理
2016/02/02 Javascript
JavaScript模拟数组合并concat
2016/03/06 Javascript
JavaScript 基础函数_深入剖析变量和作用域
2016/05/18 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
AngularJs Understanding the Controller Component
2016/09/02 Javascript
利用nvm管理多个版本的node.js与npm详解
2017/11/02 Javascript
在一个页面实现两个zTree联动的方法
2017/12/20 Javascript
详解微信小程序图片地扯转base64解决方案
2019/08/18 Javascript
Python中几种属性访问的区别与用法详解
2018/10/10 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
python通过tcp发送xml报文的方法
2018/12/28 Python
Python eval的常见错误封装及利用原理详解
2019/03/26 Python
python 追踪except信息方式
2020/04/25 Python
详解python实现可视化的MD5、sha256哈希加密小工具
2020/09/14 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
matplotlib相关系统目录获取方式小结
2021/02/03 Python
详解使用HTML5 Canvas创建动态粒子网格动画
2016/12/14 HTML / CSS
焊接专业毕业生求职信
2013/10/01 职场文书
给海归自荐信的建议
2013/12/13 职场文书
施工班组长岗位职责
2014/01/05 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
2014年法务工作总结
2014/12/11 职场文书
长城导游词400字
2015/01/30 职场文书
邀请书模板
2015/02/02 职场文书
我的收音机情缘
2022/04/05 无线电