HTML操作是编程中很重要的一块,下面用Python3.x中的html.parser中的HTMLParser类来进行HTML的解析。

HTMLParser类定义及常用方法

标准库中的定义

class html.parser.HTMLParser(*, convert_charrefs=True)

HTMLParser主要是用来解析HTML文件(包括HTML中无效的标记)

参数convert_charrefs表示是否将所有的字符引用自动转化为Unicode形式,Python3.5以后默认是True

HTMLParser可以接收相应的HTML内容,并进行解析,遇到HTML的标签会自动调用相应的handler(处理方法)来处理,用户需要自己创建相应的子类来继承HTMLParser,并且复写相应的handler方法

HTMLParser不会检查开始标签和结束标签是否是一对

常用方法

HTMLParser.feed(data):接收一个字符串类型的HTML内容,并进行解析

HTMLParser.close():当遇到文件结束标签后进行的处理方法。如果子类要复写该方法,需要首先调用HTMLParser累的close()

HTMLParser.reset():重置HTMLParser实例,该方法会丢掉未处理的html内容

HTMLParser.getpos():返回当前行和相应的偏移量

HTMLParser.handle_starttag(tag, attrs):对开始标签的处理方法。例如

,参数tag指的是div,attrs指的是一个(name,Value)的列表

HTMLParser.handle_endtag(tag):对结束标签的处理方法。例如

,参数tag指的是div

HTMLParser.handle_data(data):对标签之间的数据的处理方法。test,data指的是“test”

HTMLParser.handle_comment(data):对HTML中注释的处理方法。

实例

import json

#For python 3.x

from html.parser import HTMLParser

#定义HTMLParser的子类,用以复写HTMLParser中的方法

class MyHTMLParser(HTMLParser):

#构造方法,定义data数组用来存储html中的数据

def __init__(self):

HTMLParser.__init__(self)

self.data = []

#覆盖starttag方法,可以进行一些打印操作

def handle_starttag(self, tag, attrs):

pass

#print("Start Tag: ",tag)

#for attr in attrs:

# print(attr)

#覆盖endtag方法

def handle_endtag(self, tag):

pass

#覆盖handle_data方法,用来处理获取的html数据,这里保存在data数组

def handle_data(self, data):

if data.count('\n') == 0:

self.data.append(data)

#读取本地html文件.(当然也可以用urllib.request中的urlopen来打开网页数据并读取,这里不做介绍)

htmlFile = open(r"/Users/xualvin/Downloads/TFS.htm",'r')

content = htmlFile.read()

#创建子类实例

parser = MyHTMLParser()

#将html数据传给解析器进行解析

parser.feed(content)

#对解析后的数据进行相应操作并打印

for item in parser.data:

if item.startswith("{\"columns\""):

payloadDict = json.loads(item)

list = payloadDict["payload"]["rows"]

for backlog in list:

if backlog[1] == "Product Backlog Item" or backlog[1] == "Bug":

print(backlog[2]," Point: ",backlog[3])

当然了,使用Python自带的HTMLParser还是比较麻烦的,需要手写处理Html标签的函数。

建议使用Beautiful Soup,使用方法,猛戳这里!

python3 解析html_Python3.x网页抓取HTMLParser相关推荐

  1. python3一个简单的网页抓取

    python3一个简单的网页抓取 都是学PYTHON.怎么学都是学,按照基础学也好,按照例子增加印象也好,反正都是学 import urllib import urllib.requestdata={ ...

  2. Python之HTML的解析(网页抓取一)

    http://blog.csdn.net/my2010sam/article/details/14526223 --------------------- 对html的解析是网页抓取的基础,分析抓取的 ...

  3. python动态页面元素爬取_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过浏览器审查元素解析真实网页地址...

    由于主流网站都使用JavaScript展示网页内容,和前面简单抓取静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML源代码中,而是在HTML源码位置放上一段JavaScrip ...

  4. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过浏览器审查元素解析真实网页地址...

    由于主流网站都使用JavaScript展示网页内容,和前面简单抓取静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML源代码中,而是在HTML源码位置放上一段JavaScrip ...

  5. python3爬取网易云歌单数据清洗_网页抓取网易云音乐及评论数据分析

    网页抓取网易云音乐及评论数据分析 游贤 成都理工大学信息科学与技术学院 [摘 要] 摘要:为了分析网易云音乐中哪些歌曲是热门歌曲,哪些歌曲的评论 最多,从而了解到人们对于不同音乐类型的喜爱程度,采用成 ...

  6. Python框架篇:结构化的网页抓取框架-Scrapy

    前言 大家好,我是一身正气的辣条哥 今天主要跟大家分享一下Scrapy,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的 ...

  7. python网络爬虫学习笔记(6)动态网页抓取(一)知识

    文章目录 网络爬虫学习笔记(2) 1 资料 2 笔记 2-1 动态抓取概述 2-2 通过浏览器审查元素解析真实网页地址 2-3 网页URL地址的规律 2-4 json库 2-5 通过Selenium模 ...

  8. python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取

    如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...

  9. 一个简单的网页抓取工具

    前两天遇到一个妹子,她说不会从拉网页,我想用node做个网页抓取工具是何尝的简单,于是装x之路开始了. 其实想法很简单,由网址得到html,由html解析css,js,image等,分别下载就行了, ...

最新文章

  1. 远程服务器端口怎么修改,如何修改远程服务器端口号
  2. swift4 attributedText简单使用以及改变链接字体颜色
  3. 华为笔记本怎么激活windows_取代Windows?最美国产操作系统诞生,华为笔记本电脑已搭载...
  4. VTK:绘制箱形图 BoxChart用法实战
  5. c++ 字符串赋给另一个_7.2 C++字符串处理函数
  6. 帝国cms录入表单模板php,帝国cms7.5在线表单提交制作教程
  7. php测试接口的小工具,PHP API接口测试小工具
  8. Python函数之进阶
  9. 管理linux文件的pe软件,诺达佳U盘启动盘制作工具v5.51(UD+EFI三分区linuxPE+winPE版)...
  10. 广义线性模型(GLMs)及算法介绍
  11. 关于gis中坐标系:WGS84,EPSG4326,EPSG3857,墨卡托。EPSG:4490
  12. 统计遗传学:第四章,GWAS分析
  13. 网站打开慢解决办法——在Google Chrome浏览器中安装ReplaceGoogleCDN插件
  14. 张飞硬件90天学习笔记——第01天个人记录,完整请看我的个人简介/主页
  15. 全新UI宝宝起名神器小程序源码+样式非常美观
  16. 如何高效制作数据可视化大屏,大屏高效制作攻略分享,总有一款适合你
  17. RTX 3060 快速配置GPU版本tensorflow
  18. robots.txt介绍
  19. OpenMeetings安装
  20. 初识Java ~ (二) # Java 中程序的执行流程,(万字长文)特别细~ 可收藏~

热门文章

  1. 安装Typora情况下,Windows右键新建菜单中增加新建md文件
  2. 设计模式-模板方法(Template Method Patten)
  3. Alpine Linux 中的 apk 命令讲解
  4. 【收藏】firewalld开放端口
  5. 可视化数据库管理工具DataGrip使用详解
  6. Scala 中将方法、函数、函数式编程和面向对象编程关系分析图
  7. String类和StringBuffer类的区别
  8. Verilog中的加法器(半加器,全加器,串行、超前进位加法器)
  9. css去除div连速点击的蓝色高亮效果
  10. python里面两个大于号_【课堂笔记】Python常用的数值类型有哪些?