Python HTML解析模块HTMLParser用法分析【爬虫工具】


Posted in Python onApril 05, 2019

本文实例讲述了Python HTML解析模块HTMLParser用法。分享给大家供大家参考,具体如下:

简介

先简略介绍一下。实际上,HTMLParser是python用来解析HTML的内置模块。它可以分析出HTML里面的标签、数据等等,是一种处理HTML的简便途径。HTMLParser采用的是一种事件驱动的模式,当HTMLParser找到一个特定的标记时,它会去调用一个用户定义的函数,以此来通知程序处理。它主要的用户回调函数的命名都是以"handle_"开头的,都是HTMLParser的成员函数。当我们使用时,就从HTMLParser派生出新的类,然后重新定义这几个以"handle_"开头的函数即可。这几个函数包括:

(1)handle_startendtag 

处理开始标签和结束标签(即单标签)
(2)handle_starttag    

   处理开始标签,比如<xx>
(3)handle_endtag      

  处理结束标签,比如</xx>
(4)handle_charref     

   处理特殊字符串,就是以&#开头的,一般是内码表示的字符
(5)handle_entityref  

   处理一些特殊字符,以&开头的,比如  
(6)handle_data        

   处理数据,就是<xx>data</xx>中间的那些数据
(7)handle_comment          处理注释
(8)handle_decl        

    处理<!开头的,比如<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
(9)handle_pi          

      处理形如<?instruction>的东西

实例

OK,废话少说,直接上手,来一个简单的爬虫实例——抓取贴吧图片。

from html.parser import HTMLParser
from urllib import request
class MyHTMLParser(HTMLParser):   # 创建HTML解析类
  def __init__(self):
    HTMLParser.__init__(self)
    self.gifs_urls = []     # 创建列表,保存gif
    self.jpgs_urls = []     # 创建列表,保存jpg
  # 重写HTMLParser中的内置方法
  def handle_starttag(self, tags, attrs): # 处理起始标记
    if tags == 'img':  # 处理图片
      for attr in attrs:
        for t in attr:
          if 'gif' in t and 'https' in t:
            self.gifs_urls.append(t)  # 添加到gif列表
          elif 'jpg' in t and 'https' in t:
            self.jpgs_urls.append(t)  # 添加到jpg列表
          else:
            pass
  # 自定义的方法
  def get_gifs(self):   # 返回gif列表
    return self.gifs_urls
  def get_jpgs(self):   # 返回jpg列表
    return self.jpgs_urls
  # 自定义的方法,获取页面
  def getHTML(self,url):
    req=request.Request(url,method='GET')
    html=request.urlopen(req,timeout=30)
    return html.read()
  # 自定义的方法,批量下载图片
  def downImgs(self,img_urls,n=10,path='Image/'):
    count=1
    for url in img_urls:
      request.urlretrieve(url=url,filename='{0}{1}{2}'.format(path,count,'.jpg'))
      count=count+1
      if count == n + 1:
        print('共下载%d张图片' %(n))
        return
if __name__ == '__main__':
  Url = 'http://tieba.baidu.com/p/2256306796'
  HtmlParser=MyHTMLParser()
  Html=HtmlParser.getHTML(Url)
  # print(Html)
  HtmlParser.feed(str(Html))   #开始解析HTML,自动调用HTMLParser中的内置方法
  HtmlParser.downImgs(HtmlParser.get_jpgs())

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
python清除字符串里非字母字符的方法
Jul 02 Python
python模拟登录并且保持cookie的方法详解
Apr 04 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
Python数据可视化编程通过Matplotlib创建散点图代码示例
Dec 09 Python
Python复制Word内容并使用格式设字体与大小实例代码
Jan 22 Python
python3操作微信itchat实现发送图片
Feb 24 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
Centos7 Python3下安装scrapy的详细步骤
Mar 15 Python
python3 flask实现文件上传功能
Mar 20 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Python爬虫实现爬取百度百科词条功能实例
Apr 05 #Python
Python3.5多进程原理与用法实例分析
Apr 05 #Python
Python选择网卡发包及接收数据包
Apr 04 #Python
详解Python的数据库操作(pymysql)
Apr 04 #Python
python dlib人脸识别代码实例
Apr 04 #Python
python图像处理入门(一)
Apr 04 #Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 #Python
You might like
文章推荐系统(二)
2006/10/09 PHP
PHP 简易输出CSV表格文件的方法详解
2013/06/20 PHP
PHP函数extension_loaded()用法实例
2015/01/19 PHP
php获取访问者IP地址汇总
2015/04/24 PHP
PHP限制HTML内容中图片必须是本站的方法
2015/06/16 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
利用JavaScript实现新闻滚动效果(实例代码)
2013/11/27 Javascript
js读写cookie实现一个底部广告浮层效果的两种方法
2013/12/29 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
js实现鼠标滑过文字链接色彩变化的效果
2015/05/06 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
Vue实现购物车功能
2017/04/27 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
vue源码nextTick使用及原理解析
2019/08/13 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
[14:20]刀塔大凶女神互压各路奇葩屌丝
2014/05/16 DOTA
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
Python同时向控制台和文件输出日志logging的方法
2015/05/26 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
Python实现识别图片内容的方法分析
2018/07/11 Python
Python多项式回归的实现方法
2019/03/11 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
VSCode中自动为Python文件添加头部注释
2019/11/14 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
python爬虫开发之PyQuery模块详细使用方法与实例全解
2020/03/09 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
领导干部培训感言
2014/01/23 职场文书
摄影助理岗位职责
2014/02/07 职场文书
保险公司晨会主持词
2014/03/22 职场文书
教师四风对照检查材料思想汇报
2014/09/17 职场文书
教师党员学习十八届四中全会思想汇报
2014/11/03 职场文书
避坑之 JavaScript 中的toFixed()和正则表达式
2022/04/19 Javascript