2016-09-25 226 views
0
30 <li class="start_1"> 
31    <input type="checkbox" name="word_ids[]" value="34" class="list_check"> 
32   </li> 

這是我想要解析的html文件的一部分。但是,當我申請Python解析html不匹配的標記錯誤

uh = open('1.htm','r') 
data = uh.read() 
print data 
tree = ET.fromstring(data) 

這表明

xml.etree.ElementTree.ParseError: mismatched tag: line 32, column 18

我不知道是怎麼回事了?

回答

0

您試圖使用XML分析器解析HTML;後者沒有<input>沒有結束標記的概念。

使用實際的HTML解析器;如果要使用兼容ElementTree的API訪問結果,請使用lxml項目,該項目爲includes an HTML parser。否則,使用BeautifulSoup(它可以使用底層的lxml作爲解析引擎)。

0

爲了解析HTML在Python我使用LXML:使用XPath

import lxml.html 
// html string 
dom = '<li class="start_1">...</li>' 
// get the root node 
root_node = lxml.html.fromstring(dom) 

後,你可以用它玩,例如:

nodes = root_node.xpath("//*")