Python解析html不匹配的标签错误

时间:2016-09-25 13:55:33

标签: python html parsing

30   <li class="start_1">
31               <input type="checkbox" name="word_ids[]" value="34" class="list_check">
32          </li> 

这是我要解析的html文件的一部分。但是当我申请时

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

显示

  

xml.etree.ElementTree.ParseError:标记不匹配:第32行,第18列

我不知道出了什么问题?

2 个答案:

答案 0 :(得分:0)

您正尝试使用 XML解析器解析HTML ;后者没有<input>没有结束标记的概念。

使用实际的HTML解析器;如果要使用与ElementTree兼容的API访问结果,请使用lxml项目includes an HTML parser。否则,使用BeautifulSoup(可以使用lxml作为解析引擎)。

答案 1 :(得分:0)

要解析Python中的HTML,请使用lxml:

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

之后你可以玩它,例如使用xpath:

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