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上基于Markov链生成伪随机文本的教程
Apr 17 Python
Python的Flask框架标配模板引擎Jinja2的使用教程
Jul 12 Python
windows及linux环境下永久修改pip镜像源的方法
Nov 28 Python
python subprocess 杀掉全部派生的子进程方法
Jan 16 Python
利用python模拟实现POST请求提交图片的方法
Jul 25 Python
python线程池threadpool实现篇
Apr 27 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
Jul 23 Python
基于python判断目录或者文件代码实例
Nov 29 Python
Python使用py2neo操作图数据库neo4j的方法详解
Jan 13 Python
解决echarts中饼图标签重叠的问题
May 16 Python
cookies应对python反爬虫知识点详解
Nov 25 Python
Python超详细分步解析随机漫步
Mar 17 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 file_exists 检查文件或目录是否存在的函数
2010/05/10 PHP
PHP延迟静态绑定示例分享
2014/06/22 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
javaScript对象和属性的创建方法
2007/01/15 Javascript
jqgrid 简单学习笔记
2011/05/03 Javascript
Javascript selection的兼容性写法介绍
2013/12/20 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
2014/04/10 Javascript
JavaScript中获取鼠标位置相关属性总结
2014/10/11 Javascript
jQuery实现购物车表单自动结算效果实例
2015/08/10 Javascript
快速使用Bootstrap搭建传送带
2016/05/06 Javascript
jquery实现点击页面回到顶部
2016/11/23 Javascript
Node.js中多进程模块Cluster的介绍与使用
2017/05/27 Javascript
JavaScript实现表单注册、表单验证、运算符功能
2018/10/15 Javascript
在 Vue.js中优雅地使用全局事件的方法
2019/02/01 Javascript
JQuery常用选择器功能与用法实例分析
2019/12/23 jQuery
OpenLayers3实现对地图的基本操作
2020/09/28 Javascript
ReactRouter的实现方法
2021/01/25 Javascript
Python实现好友全头像的拼接实例(推荐)
2017/06/24 Python
如何使用VSCode愉快的写Python于调试配置步骤
2018/04/06 Python
Python实现基于KNN算法的笔迹识别功能详解
2018/07/09 Python
基于django channel实现websocket的聊天室的方法示例
2019/04/11 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
Django REST framework 单元测试实例解析
2019/11/07 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
Python3中的f-Strings增强版字符串格式化方法
2020/03/04 Python
在PyCharm中遇到pip安装 失败问题及解决方案(pip失效时的解决方案)
2020/03/10 Python
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
Carrs Silver官网:英国著名的银器品牌
2020/08/29 全球购物
自我鉴定怎么写
2013/12/05 职场文书
学生打架检讨书大全
2014/01/23 职场文书
计算机网络工程专业职业生涯规划书
2014/03/10 职场文书
期末考试复习计划
2015/01/19 职场文书
环保守法证明
2015/06/24 职场文书
一百条裙子读书笔记
2015/07/01 职场文书
关于springboot配置druid数据源不生效问题(踩坑记)
2021/09/25 Java/Android
Redis基本数据类型List常用操作命令
2022/06/01 Redis