Python HTML操作(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):对开始标签的处理方法。例如<div id="main">,参数tag指的是div,attrs指的是一个(name,Value)的列表HTMLParser.handle_endtag(tag):对结束标签的处理方法。例如</div>,参数tag指的是divHTMLParser.handle_data(data):对标签之间的数据的处理方法。<tag>test</tag>,data指的是“test”HTMLParser.handle_comment(data):对HTML中注释的处理方法。
实例应用
- 待处理文件: http://files.cnblogs.com/files/AlwinXu/Scan_TFS.zip
- 代码
__author__ = 'xua' 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 HTML操作(HTMLParser)的更多相关文章
- Python中操作mysql的pymysql模块详解
Python中操作mysql的pymysql模块详解 前言 pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同.但目前pymysql支持python3.x而后者不支持 ...
- Python 字符串操作
Python 字符串操作(string替换.删除.截取.复制.连接.比较.查找.包含.大小写转换.分割等) 去空格及特殊符号 s.strip() .lstrip() .rstrip(',') 复制字符 ...
- Python目录操作
Python目录操作 os和os.path模块os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回但前目录('.') ...
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- Python list 操作
创建列表sample_list = ['a',1,('a','b')] Python 列表操作sample_list = ['a','b',0,1,3] 得到列表中的某一个值value_start = ...
- Python Mongo操作
# -*- coding: utf-8 -*- ''' Python Mongo操作Demo Done: ''' from pymongo import MongoClient conn = None ...
- python数据库操作之pymysql模块和sqlalchemy模块(项目必备)
pymysql pymsql是Python中操作MySQL的模块,其使用方法和MySQLdb几乎相同. 1.下载安装 pip3 install pymysql 2.操作数据库 (1).执行sql #! ...
- [Python学习笔记][第七章Python文件操作]
2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...
- python模块介绍- HTMLParser 简单的HTML和XHTML解析器
python模块介绍- HTMLParser 简单的HTML和XHTML解析器 2013-09-11 磁针石 #承接软件自动化实施与培训等gtalk:ouyangchongwu#gmail.comqq ...
- python excel操作总结
1.openpyxl包的导入 Dos命令行输入 pip install openpyxl==2.3.3 这里注意一下openpyxl包的版本问题 版本装的太高有很多api不支持了,所以笔者这里用的是2 ...
随机推荐
- MongoDB导入导出以及数据库备份以及.dat数据
1.导出工具:mongoexport 1.概念: mongoDB中的mongoexport工具可以把一个collection导出成JSON格式或CSV格式的文件.可以通过参数指 ...
- 深入浅出——float
FLOAT 参考张鑫旭-鑫空间-鑫生活[http://www.zhangxinxu.com]的CSS float浮动的深入研究.详解及拓展 1.FLOAT的特性 float属性的初衷只是为了实现文字 ...
- hdu 4685(强连通分量+二分图)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4685 题意:n个王子和m个公主,王子只能和他喜欢的公主结婚,公主可以和所有的王子结婚,输出所有王子可能 ...
- 计算机cpu、寄存器、内存区别
1.寄存器是中央处理器内的组成部份.它跟CPU有关.寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令.数据和位址.在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC). ...
- Hibernate表关系03
一. 一对多映射 1.基本应用 1.1 准备项目 创建项目:hibernate-02-relation 引入jar,同前一个项目 复制实体(客户).映射.配置.工具类 1.2 创建订单表 表名: t_ ...
- wordpress 页面显示指定分类文章
首页显示指定分类备份主题文件夹中的 index.php 文件,修改index.php找到如下一行代码:<?php if (have_posts()) : ?>在上面这行代码的前面加上:&l ...
- 洛谷 P2317 [HNOI2005]星际贸易 解题报告
P2317 [HNOI2005]星际贸易 题目描述 输入输出格式 输入格式: 输出格式: 如果可以找到这样的方案,那么输出文件output.txt中包含两个整数X和Y.X表示贸易额,Y表示净利润并且两 ...
- CF1114E Arithmetic Progression(交互题,二分,随机算法)
既然是在CF上AC的第一道交互题,而且正是这场比赛让我升紫了,所以十分值得纪念. 题目链接:CF原网 题目大意:交互题. 有一个长度为 $n$ 的序列 $a$,保证它从小到大排序后是个等差数列.你不知 ...
- Linux 系统缓存机制学习
前言:本文为参考他人的文章,是一篇学习记录型博客.理解linux的系统缓存机制有助于理解elasticsearch实时更新的原理. 一.缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲 ...
- PopupWindow 学习总结
http://wenku.baidu.com/link?url=d48Zr6m7XJq-2JagViGTtVhsvGNHoBg9bHJCbQUJSb5tjRPx9ecavBNlL71ywrT8josV ...