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

作者:蔷薇Nina 时间:2023-10-04 02:07:09 

本文实例讲述了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      处理一些特殊字符,以&开头的,比如 &nbsp;
(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程序设计有所帮助。

来源:https://www.cnblogs.com/wcwnina/p/8082761.html

标签:Python,HTMLParser,爬虫工具
0
投稿

猜你喜欢

  • 一篇文章彻底搞懂Python切片操作

    2021-10-11 18:23:07
  • 给Python初学者的一些编程技巧

    2023-05-27 21:41:30
  • ASP不允许同一个用户同时登陆两次

    2008-06-03 13:45:00
  • Python 抖音评论数据抓取分析

    2023-03-22 15:30:20
  • NumPy 基本切片和索引的具体使用方法

    2023-02-11 20:47:50
  • python 实现读取csv数据,分类求和 再写进 csv

    2023-02-02 00:47:20
  • 详解MySQL的Seconds_Behind_Master

    2024-01-18 04:58:00
  • Python的类成员变量默认初始值的坑及解决

    2023-12-02 18:46:47
  • 使用PIL(Python-Imaging)反转图像的颜色方法

    2022-12-15 19:16:48
  • 教你用Python读取CSV文件的5种方式

    2022-12-11 15:32:51
  • Python基于Matplotlib库简单绘制折线图的方法示例

    2021-10-26 15:01:12
  • 一篇文章彻底搞懂python正则表达式

    2021-02-10 13:16:19
  • 分享JS代码实现鼠标放在输入框上输入框和图片同时更换样式

    2024-05-22 10:41:02
  • javascript在事件监听方面的兼容性小结

    2024-04-29 13:45:19
  • Python图像处理之图像的缩放、旋转与翻转实现方法示例

    2023-03-09 11:25:20
  • 简单介绍Python中的floor()方法

    2023-06-08 03:36:21
  • Vue组件通信方法案例总结

    2023-07-02 16:51:58
  • Python PaddleNLP开源实现快递单信息抽取

    2023-01-21 04:35:11
  • Mysql入门系列:MYSQL日志文件维护

    2008-11-24 13:10:00
  • Python 利用pydub库操作音频文件的方法

    2022-12-12 05:42:53
  • asp之家 网络编程 m.aspxhome.com