HTML操做是編程中很重要的一塊,下面用Python3.x中的html.parser中的HTMLParser類來進行HTML的解析。html
class html.parser.HTMLParser(*, convert_charrefs=True)
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中註釋的處理方法。__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])