我有一串HTML元素
HTMLstr = """
<div class='column span4 ui-sortable' id='column1'></div>
<div class='column span4 ui-sortable' id='column2'>
<div class='portlet ui-widget ui-widget-content ui-helper-clearfix ui-corner-all' id='widget_basicLine'>
<div class='portlet-header ui-widget-header ui-corner-all'><span class='ui-icon ui-icon-minusthick'></span>Line Chart </div>
<div class='portlet-content' id=basicLine style='height:270px; margin: 0 auto;'></div>
</div>
</div>
<div class='column span4 ui-sortable' id='column3'></div> """
我想将上面的HTML字符串转换为python中的各个HTML DOM元素?
我可以通过$(this).html(HTMLstr);
在jQuery / AJAX函数中完成它但是如何在python中解析它?
答案 0 :(得分:4)
Python具有用于解析HTML文档的内置库。在Python 2.x中,您可以选择HTMLParser
(推荐)和htmllib
(不建议使用);在Python 3.x中,html.parser
是相应的库(这是Python 2.x中重命名的HTMLParser
版本。)
但是,这些是事件驱动的解析器(类似于XML SAX解析器),可能不是您想要的。如果您知道文档将是有效的XML(即标签正确关闭等),则可以使用Python的XML解析工具之一。库xml.dom
和xml.dom.minidom
都是选项,具体取决于您要查找的解析类型(我怀疑xml.dom.minidom
足以满足您的目的,给出您的示例)。
例如,您应该能够在Python控制台中输入它并获得显示的输出:
>>> import xml.dom.minidom
>>> x = xml.dom.minidom.parseString('<div class="column span4 ui-sortable" id="column2"><div class="portlet ui-widget ui-widget-content ui-helper-clearfix ui-corner-all" id="widget_basicLine" /></div>')
>>> x.documentElement.nodeName
'div'
>>> x.documentElement.getAttribute("class")
'column span4 ui-sortable'
>>> len(x.documentElement.firstChild.childNodes)
0
您收到的Node对象的完整描述可用here。如果您习惯在JavaScript中使用DOM,则应该发现大多数属性都是相同的。请注意,因为Python将其视为XML文档,所以特定于HTML的属性(如“class”)没有特殊意义,因此我认为您必须使用getAttribute
函数来访问它们。
答案 1 :(得分:1)
你应该使用BeautifulSoup - 完全符合你的需要。