2015-04-05 39 views
0

我想了解一個python代碼。它有一個語句當沒有參數時,findAll會做什麼?

soup.findAll() 

其中soupBeautifulsoup object

我印刷的類型和結果的長度是

類型:<class 'bs4.element.ResultSet'>

長度= 1359

什麼是findAll匹配在這裏?

+0

你可以遍歷它,看看它包含什麼? – 2015-04-05 17:52:34

+0

@Alberto,不,它太大了,而且內容是一些zomato網址的html源代碼,因此我很難破譯元素結束和其他開始的地方 – turing 2015-04-05 17:55:01

+1

顯然它包含了所有分成不同的html元素,你不會尋找任何特定的元素,所以它會回退所有元素 – 2015-04-05 18:16:30

回答

1

這個回答已經足夠:

>>> BeautifulSoup('<div>some text</div>').findAll() 

[<html><body><div>some text</div></body></html>, 
<body><div>some text</div></body>, 
<div>some text</div>] 

它發現所有的孩子,也就是上層元素html,內部元件body,而最裏面的元素,在div。這就是findAll所做的,它找到所有與該參數匹配的湯對象的所有孩子,這裏的參數是「空」,因此它匹配所有內容。

請注意,使用BeautifulSoup創建對象將添加htmlbody(如果它們不存在)。

1

我不能通過查看the source真正弄清楚它,但它要麼列出所有的子標籤或沒有。 ResultSet是列表的一個子類,所以如果長度大於零,那麼我猜想它會返回所有子標記,並且沒有搜索條件。 ResultSet具有source屬性,它是SoupStrainer對象,包含attrs屬性中的搜索參數。嘗試

result = soup.findAll() 
print result.source 
相關問題