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抓取网页时字符集转换问题处理方案分享
Jun 19 Python
使用Pyrex来扩展和加速Python程序的教程
Apr 13 Python
python通过openpyxl生成Excel文件的方法
May 12 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
通过python将大量文件按修改时间分类的方法
Oct 17 Python
python 分离文件名和路径以及分离文件名和后缀的方法
Oct 21 Python
使用pyecharts生成Echarts网页的实例
Aug 12 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
利用Tensorflow的队列多线程读取数据方式
Feb 05 Python
python画环形图的方法
Mar 25 Python
python中Ansible模块的Playbook的具体使用
May 28 Python
Python实现树莓派摄像头持续录像并传送到主机的步骤
Nov 30 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
用PHP4访问Oracle815
2006/10/09 PHP
php实现的太平洋时间和北京时间互转的自定义函数分享
2014/08/19 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP 读取大文件并显示的简单实例(推荐)
2016/08/12 PHP
jquery getScript动态加载JS方法改进详解
2012/11/15 Javascript
js实现动态添加、删除行、onkeyup表格求和示例
2013/08/18 Javascript
DOM基础教程之使用DOM + Css
2015/01/20 Javascript
JS实现动态移动层及拖动浮层关闭的方法
2015/04/30 Javascript
jqgrid实现简单的单行编辑功能
2017/09/30 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
vue webpack打包优化操作技巧
2018/02/22 Javascript
React props和state属性的具体使用方法
2018/04/12 Javascript
nodejs实现获取本地文件夹下图片信息功能示例
2019/06/22 NodeJs
JS表单验证插件之数据与逻辑分离操作实例分析【策略模式】
2020/05/01 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
[04:56]经典回顾:前Ehome 与 前LGD
2015/02/26 DOTA
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
python抓取网页内容示例分享
2014/02/24 Python
Python字符串处理之count()方法的使用
2015/05/18 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Python networkx包的实现
2020/02/14 Python
mac在matplotlib中显示中文的操作方法
2020/03/06 Python
html5指南-7.geolocation结合google maps开发一个小的应用
2013/01/07 HTML / CSS
The Hut美国/加拿大:英国领先的豪华在线百货商店
2019/03/26 全球购物
意大利在线高尔夫商店:Online Golf
2021/03/09 全球购物
Yahoo-PHP面试题1
2016/07/20 面试题
学期自我评价
2014/01/27 职场文书
优秀学生获奖感言
2014/02/15 职场文书
副总经理岗位职责
2014/03/16 职场文书
学生期末评语大全
2014/04/30 职场文书
原来闭幕词是这样写的呀!
2019/07/01 职场文书
python执行js代码的方法
2021/05/13 Python
JavaScript分页组件使用方法详解
2021/07/26 Javascript
使用Redis实现点赞取消点赞的详细代码
2022/03/20 Redis
Python的property属性详细讲解
2022/04/11 Python