我想解析一個很奇怪的頁面。這裏有一個簡化版本:解析奇怪的網頁 - 多個html標籤
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml">
<form id="x" method="post" action="x">
<input type="hidden" name="v1" value="v" />
<html xmlns="http://www.w3.org/1999/xhtml">
<input type="hidden" name="v2" value="v" />
</html>
</form>
</html>
是的,表單裏面有一個html標籤。
這是有效的(X)HTML嗎?我知道這是(至少部分)使用Java Server Faces完成的。
至於實際的問題:
>>> BeautifulSoup(html).find("form")
<form id="x" method="post" action="x">
<input type="hidden" name="v1" value="v" />
</form>
BeautifulSoup不喜歡這個在所有的,只是假裝它不存在。
有沒有人經歷過類似的事情? 我想我可能解析原始的XML,但我想使用BeautifulSoup,如果可能的話。
你真的期望或需要嵌套''標籤?我會認爲理想的行爲是像BeautifulSoup那樣優雅地忽略無效標籤。 –
@ m.brindley是的,我需要v2,因爲瀏覽器實際上是在表單中發送它。在這種情況下,BeautifulSoup的行爲確實很優雅,但在這種特殊情況下並不是非常有用 – goncalopp
糟糕,我誤讀了您的BS輸出。我沒有意識到它已經丟棄了第二個輸入元素以及額外的''標籤。我似乎記得使用'DOCTYPE html'時有一些嚴格的規則 - 也許如果你嘗試在4.01 Transitional中使用BS,它的行爲會有所不同。 –