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安装第三方库的3种方法
Jun 21 Python
python如何实现excel数据添加到mongodb
Jul 30 Python
总结用Pdb库调试Python的方式及常用的命令
Aug 18 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
Python3读取Excel数据存入MySQL的方法
May 04 Python
在pandas多重索引multiIndex中选定指定索引的行方法
Nov 16 Python
基于django channel实现websocket的聊天室的方法示例
Apr 11 Python
python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例
Mar 10 Python
django序列化时使用外键的真实值操作
Jul 15 Python
Python在后台自动解压各种压缩文件的实现方法
Nov 10 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
Apr 28 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 一个页面执行时间类代码
2010/03/05 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
PHP连接SQLServer2005的方法
2015/01/27 PHP
CodeIgniter中使用Smarty3基本配置
2015/06/29 PHP
ThinkPHP5 验证器的具体使用
2018/05/31 PHP
用javascript做拖动布局的思路
2008/05/31 Javascript
JSON 和 JavaScript eval使用说明
2010/06/13 Javascript
jQuery教程 $()包装函数来实现数组元素分页效果
2013/08/13 Javascript
用JQuery实现全选与取消的两种简单方法
2014/02/22 Javascript
用js读、写、删除Cookie代码续篇
2014/12/03 Javascript
javascript数据结构之双链表插入排序实例详解
2015/11/25 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
实例浅析js的this
2016/12/11 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
2017/09/20 jQuery
Swiper自定义分页器使用详解
2017/12/28 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
如何把vuejs打包出来的文件整合到springboot里
2018/07/26 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
jquery实现点击左右按钮切换图片
2021/01/27 jQuery
python 寻找list中最大元素对应的索引方法
2018/06/28 Python
python利用Tesseract识别验证码的方法示例
2019/01/21 Python
详解python深浅拷贝区别
2019/06/24 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
浅谈在JupyterNotebook下导入自己的模块的问题
2020/04/16 Python
python怎么对数字进行过滤
2020/07/05 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
Stubhub英国:购买体育、演唱会和剧院门票
2018/06/10 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
自我评价正确写法范文
2013/12/10 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
医院护士工作检讨书
2014/10/26 职场文书
新闻发布会新闻稿
2015/07/17 职场文书
MySQL详解进行JDBC编程与增删改查方法
2022/06/16 MySQL