python3 解析html_Python3.x网页抓取HTMLParser
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):对开始标签的处理方法。例如
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相关推荐
- python3一个简单的网页抓取
python3一个简单的网页抓取 都是学PYTHON.怎么学都是学,按照基础学也好,按照例子增加印象也好,反正都是学 import urllib import urllib.requestdata={ ...
- Python之HTML的解析(网页抓取一)
http://blog.csdn.net/my2010sam/article/details/14526223 --------------------- 对html的解析是网页抓取的基础,分析抓取的 ...
- python动态页面元素爬取_Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过浏览器审查元素解析真实网页地址...
由于主流网站都使用JavaScript展示网页内容,和前面简单抓取静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML源代码中,而是在HTML源码位置放上一段JavaScrip ...
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过浏览器审查元素解析真实网页地址...
由于主流网站都使用JavaScript展示网页内容,和前面简单抓取静态网页不同的是,在使用JavaScript时,很多内容并不会出现在HTML源代码中,而是在HTML源码位置放上一段JavaScrip ...
- python3爬取网易云歌单数据清洗_网页抓取网易云音乐及评论数据分析
网页抓取网易云音乐及评论数据分析 游贤 成都理工大学信息科学与技术学院 [摘 要] 摘要:为了分析网易云音乐中哪些歌曲是热门歌曲,哪些歌曲的评论 最多,从而了解到人们对于不同音乐类型的喜爱程度,采用成 ...
- Python框架篇:结构化的网页抓取框架-Scrapy
前言 大家好,我是一身正气的辣条哥 今天主要跟大家分享一下Scrapy,Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的 ...
- python网络爬虫学习笔记(6)动态网页抓取(一)知识
文章目录 网络爬虫学习笔记(2) 1 资料 2 笔记 2-1 动态抓取概述 2-2 通过浏览器审查元素解析真实网页地址 2-3 网页URL地址的规律 2-4 json库 2-5 通过Selenium模 ...
- python爬虫怎么爬同一个网站的多页数据-如何用Python爬数据?(一)网页抓取
如何用Python爬数据?(一)网页抓取 你期待已久的Python网络数据爬虫教程来了.本文为你演示如何从网页里找到感兴趣的链接和说明文字,抓取并存储到Excel. 需求 我在公众号后台,经常可以收到 ...
- 一个简单的网页抓取工具
前两天遇到一个妹子,她说不会从拉网页,我想用node做个网页抓取工具是何尝的简单,于是装x之路开始了. 其实想法很简单,由网址得到html,由html解析css,js,image等,分别下载就行了, ...
最新文章
- 远程服务器端口怎么修改,如何修改远程服务器端口号
- swift4 attributedText简单使用以及改变链接字体颜色
- 华为笔记本怎么激活windows_取代Windows?最美国产操作系统诞生,华为笔记本电脑已搭载...
- VTK:绘制箱形图 BoxChart用法实战
- c++ 字符串赋给另一个_7.2 C++字符串处理函数
- 帝国cms录入表单模板php,帝国cms7.5在线表单提交制作教程
- php测试接口的小工具,PHP API接口测试小工具
- Python函数之进阶
- 管理linux文件的pe软件,诺达佳U盘启动盘制作工具v5.51(UD+EFI三分区linuxPE+winPE版)...
- 广义线性模型(GLMs)及算法介绍
- 关于gis中坐标系:WGS84,EPSG4326,EPSG3857,墨卡托。EPSG:4490
- 统计遗传学:第四章,GWAS分析
- 网站打开慢解决办法——在Google Chrome浏览器中安装ReplaceGoogleCDN插件
- 张飞硬件90天学习笔记——第01天个人记录,完整请看我的个人简介/主页
- 全新UI宝宝起名神器小程序源码+样式非常美观
- 如何高效制作数据可视化大屏,大屏高效制作攻略分享,总有一款适合你
- RTX 3060 快速配置GPU版本tensorflow
- robots.txt介绍
- OpenMeetings安装
- 初识Java ~ (二) # Java 中程序的执行流程,(万字长文)特别细~ 可收藏~