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 Mysql数据库操作 Perl操作Mysql数据库
Jan 12 Python
Python实现获取域名所用服务器的真实IP
Oct 25 Python
Python实现的中国剩余定理算法示例
Aug 05 Python
spark: RDD与DataFrame之间的相互转换方法
Jun 07 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
python列表使用实现名字管理系统
Jan 30 Python
Python File(文件) 方法整理
Feb 18 Python
python3 下载网络图片代码实例
Aug 27 Python
python中的Elasticsearch操作汇总
Oct 30 Python
Pandas时间序列:重采样及频率转换方式
Dec 26 Python
详解运行Python的神器Jupyter Notebook
Jun 03 Python
Python初学者必备的文件读写指南
Jun 23 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使用mysqli向数据库添加数据的方法
2015/03/20 PHP
PHP8.0新功能之Match表达式的使用
2020/07/19 PHP
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
js onkeypress与onkeydown 事件区别详细说明
2012/12/13 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
JavaScript 开发工具webstrom使用指南
2014/12/09 Javascript
初探JavaScript 面向对象(推荐)
2017/09/03 Javascript
浅谈vue中慎用style的scoped属性
2017/11/28 Javascript
浅谈react性能优化的方法
2018/09/05 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
Python中decorator使用实例
2015/04/14 Python
python常见数制转换实例分析
2015/05/09 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
python3音乐播放器简单实现代码
2020/04/20 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
2020/06/02 Python
python实现学生成绩测评系统
2020/06/22 Python
Melissa鞋马来西亚官方网站:MDreams马来西亚
2018/04/05 全球购物
解决方案设计综合面试题
2015/08/31 面试题
化工专业推荐信范文
2013/11/28 职场文书
现金会计岗位职责
2013/12/05 职场文书
办护照工作证明范本
2014/01/14 职场文书
初中考试作弊检讨书
2014/02/01 职场文书
工商企业管理应届生求职信
2014/05/04 职场文书
班主任师德师风自我剖析材料
2014/10/02 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
费用申请报告范文
2015/05/15 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
springboot如何接收application/x-www-form-urlencoded类型的请求
2021/11/02 Java/Android