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 相关文章推荐
asyncio 的 coroutine对象 与 Future对象使用指南
Sep 11 Python
python SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
Python读取指定日期邮件的实例
Feb 01 Python
Pyqt5如何让QMessageBox按钮显示中文示例代码
Apr 11 Python
Python模块、包(Package)概念与用法分析
May 31 Python
pyqt5 键盘监听按下enter 就登陆的实例
Jun 25 Python
django项目环境搭建及在虚拟机本地创建django项目的教程
Aug 02 Python
python3 requests库实现多图片爬取教程
Dec 18 Python
Python socket连接中的粘包、精确传输问题实例分析
Mar 24 Python
Python实现敏感词过滤的4种方法
Sep 12 Python
python实现b站直播自动发送弹幕功能
Feb 20 Python
pytorch 权重weight 与 梯度grad 可视化操作
Jun 05 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
Terran剧情介绍
2020/03/14 星际争霸
php中apc缓存使用示例
2013/12/25 PHP
深入解读php中关于抽象(abstract)类和抽象方法的问题分析
2014/01/03 PHP
yii实现图片上传及缩略图生成的方法
2014/12/04 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
轻松创建nodejs服务器(9):实现非阻塞操作
2014/12/18 NodeJs
Jqgrid之强大的表格插件应用
2015/12/02 Javascript
深入理解JS addLoadEvent函数
2016/05/20 Javascript
jquery+Jscex打造游戏力度条
2020/09/12 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
jQuery实现异步上传一个或多个文件
2020/08/17 jQuery
js实现日历
2020/11/07 Javascript
python查看FTP是否能连接成功的方法
2015/07/30 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
解决pandas使用read_csv()读取文件遇到的问题
2018/06/15 Python
linux安装python修改默认python版本方法
2019/03/31 Python
详解python数据结构和算法
2019/04/18 Python
Python求解排列中的逆序数个数实例
2020/05/03 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
Html5 Geolocation获取地理位置信息实例
2016/12/09 HTML / CSS
飞利浦比利时官方网站:Philips比利时
2016/08/24 全球购物
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
科颜氏香港官方网店:Kiehl’s香港
2021/03/07 全球购物
UNIX命令速查表
2012/03/10 面试题
关于工资低的辞职信
2014/01/14 职场文书
工资收入证明样本(5篇)
2014/09/16 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
个人事迹材料怎么写
2014/12/30 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
Python list去重且保持原顺序不变的方法
2021/04/03 Python
Android Studio实现简易进制转换计算器
2022/05/20 Java/Android
Typescript类型系统FLOW静态检查基本规范
2022/05/25 Javascript
Python如何利用pandas读取csv数据并绘图
2022/07/07 Python