1
如何在Python中使用html5lib
來獲取<body>
元素的內容?如何通過在Python中使用html5lib來獲取body元素的內容?
例輸入數據:<html><head></head><body>xxx<b>yyy</b></hr></body></html>
預期輸出:xxx<b>yyy</b></hr>
應該工作,即使HTML被打破(未閉合的標籤,...)。
如何在Python中使用html5lib
來獲取<body>
元素的內容?如何通過在Python中使用html5lib來獲取body元素的內容?
例輸入數據:<html><head></head><body>xxx<b>yyy</b></hr></body></html>
預期輸出:xxx<b>yyy</b></hr>
應該工作,即使HTML被打破(未閉合的標籤,...)。
html5lib
允許您使用各種標準樹格式來解析文檔。您可以使用lxml來做到這一點,正如我在下面所做的那樣,或者您可以按照其user documentation中的說明與minidom,ElementTree或BeautifulSoup進行操作。
file = open("mydocument.html")
doc = html5lib.parse(file, treebuilder="lxml")
content = doc.findtext("html/body", default=None):
迴應置評
有可能達致這不使用自己的simpletree.py安裝任何外部庫,但在文件 開始的評論來看我猜想這是不是推薦的方式...
# Really crappy basic implementation of a DOM-core like thing
如果您仍然想這樣做,但是,您可以解析HTML文檔,像這樣:
f = open("mydocument.html")
doc = html5lib.parse(f)
然後通過對文檔中的子節點進行廣度優先搜索來查找要查找的元素。節點保存在名爲childNodes
的數組中,並且每個節點的名稱都存儲在name
字段中。
難道你沒有一個解決方案,不需要我安裝其他python模塊? – sorin 2011-05-28 12:53:52
http://code.google.com/p/html5lib/wiki/UserDocumentation,在「解析HTML」下可以幫助您。如果您沒有理由相信HTML格式正確,那麼BeautifulSoup可能是最好的選擇。 – 2011-05-28 14:24:36
也許我不清楚,我想'
'內的整個數據,它看起來這隻返回文本(不是實體)。 – sorin 2011-05-28 16:21:02