Beautiful Soup - descendants 屬性



方法描述

使用Beautiful Soup API中PageElement物件的descendants屬性,您可以遍歷其下所有子元素的列表。此屬性返回一個生成器物件,可以使用它以廣度優先的順序檢索子元素。

在搜尋樹結構時,廣度優先遍歷從樹的根開始,在移動到下一深度級別的節點之前,先探索當前深度級別上的所有節點。

語法

tag.descendants

返回值

descendants屬性返回一個生成器物件。

示例1

在下面的程式碼中,我們有一個包含巢狀無序列表標籤的HTML文件。我們以廣度優先的方式遍歷解析的子元素。

html = '''
   <ul id='outer'>
   <li class="mainmenu">Accounts</li>
      <ul>
      <li class="submenu">Anand</li>
      <li class="submenu">Mahesh</li>
      </ul>
   <li class="mainmenu">HR</li>
      <ul>
      <li class="submenu">Anil</li>
      <li class="submenu">Milind</li>
      </ul>
   </ul>
''' 
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
tag = soup.find('ul', {'id': 'outer'})
tags = soup.descendants
for desc in tags:
   print (desc)

輸出

<ul id="outer">
<li class="mainmenu">Accounts</li>
<ul>
<li class="submenu">Anand</li>
<li class="submenu">Mahesh</li>
</ul>
<li class="mainmenu">HR</li>
<ul>
<li class="submenu">Anil</li>
<li class="submenu">Milind</li>
</ul>
</ul>

<li class="mainmenu">Accounts</li>
Accounts
<ul>
<li class="submenu">Anand</li>
<li class="submenu">Mahesh</li>
</ul>

<li class="submenu">Anand</li>
Anand
<li class="submenu">Mahesh</li>
Mahesh

<li class="mainmenu">HR</li>
HR
<ul>
<li class="submenu">Anil</li>
<li class="submenu">Milind</li>
</ul>

<li class="submenu">Anil</li>
Anil
<li class="submenu">Milind</li>
Milind

示例2

在下面的示例中,我們列出<head>標籤的所有後代。

html = """
<html><head><title>TutorialsPoint</title></head>
<body>
<p>Hello World</p>
"""
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
tag = soup.head
for element in tag.descendants:
   print (element)

輸出

<title>TutorialsPoint</title>
TutorialsPoint
廣告