我發現了用於xml的sax和xml.minidom的HTMLParser。我有一個很好的格式的HTML,所以我不需要太強大的分析器 - 任何建議?Python:是否有內置的軟件包來將html解析爲dom
32
A
回答
11
看看BeautifulSoup。它在解析HTML時非常流行和優秀。
25
我會推薦lxml。我喜歡BeautifulSoup,但一般都會有維護問題,以及後續版本的兼容性問題。我一直很高興使用lxml。
後來:最好的建議是使用lxml,html5lib或BeautifulSoup 3.0.8。 BeautifulSoup 3.1.x適用於python 3.x,並且已知在較早的python版本as noted on the BeautifulSoup website中存在問題。
Ian Bicking在使用lxml時有一個good article。
ElementTree是一個進一步的建議,但我從來沒有使用它。
2012-01-18:有人已經通過,並決定downvote我和巴爾託什,因爲我們建議很容易獲得,但不是蟒蛇分佈的一部分Python包。因此,對於高度字面上的StackOverflowers:「您可以使用xml.dom.minidom,但沒有人會推薦這種替代方案。」
1
要處理DOM對象,可以使用HTMLDOM作爲python。
9
BeautifulSoup和lxml很棒,但這裏不是合適的答案,因爲這個問題是關於內建函數的。以下是使用內置minidom模塊解析HTML字符串的示例。經測試與CPython的3.5.2:
from xml.dom.minidom import parseString
html_string = """
<!DOCTYPE html>
<html><head><title>title</title></head><body><p>test</p></body></html>
"""
# extract the text value of the document's <p> tag:
doc = parseString(html_string)
paragraph = doc.getElementsByTagName("p")[0]
content = paragraph.firstChild.data
print(content)
它不是建立在,如果我沒有記錯 – Guy 2010-05-06 15:12:14
不,它不是內置。但是您可以使用easy_install輕鬆安裝,或者從網站下載並放入PYTHONPATH。整個BeautifulSoup包含在一個文件中,所以它不是一個負擔。 – Bartosz 2010-05-06 15:17:43
BeautifulSoup應該解析骯髒的HTML不是「非常合適」的一個。 – tbz 2015-01-05 11:20:27