使用BeautifulSoup查詢標籤的兄弟節點


資料可以透過一種稱為網頁抓取的有用方法從網站中提取,而一個流行的Python網頁抓取包是BeautifulSoup,它提供了一種簡單的解析HTML和XML文件的方法,使我們能夠從網站中提取某些資料。查詢標籤的兄弟節點是在抓取網頁時的一項常見任務,它可以定義為標籤的兄弟節點是與主標籤具有相同父節點的任何其他標籤。在這篇博文中,我們將學習如何使用BeautifulSoup來查詢標籤的兄弟節點。

安裝和設定

要使用BeautifulSoup,必須首先使用pip(Python的包管理器)安裝它。

pip install beautifulsoup4

安裝後,你可以在Python程式碼中匯入BeautifulSoup:

from bs4 import BeautifulSoup

語法

使用BeautifulSoup查詢標籤兄弟節點的語法如下:

siblings = tag.findNextSiblings()

這裡,tag是我們要查詢其兄弟節點的標籤,siblings是該標籤所有兄弟節點的列表。

演算法

  • 首先使用BeautifulSoup解析HTML或XML內容。

  • 將文件傳遞給BeautifulSoup函式即可完成此操作。

  • 使用find()函式找到要查詢其兄弟節點的標籤。

  • 要查詢標籤的每個兄弟節點,請使用findNextSiblings()函式。

示例1

from bs4 import BeautifulSoup
html = """
<html>
<body>
   <div>
      <p>Tutorials Point Python Text 1</p>
      <p>Tutorials Point Python Text 2</p>
      <p>Tutorials Point Python Text 3</p>
   </div>
</body>
</html>
"""
soup = BeautifulSoup(html, "html.parser")
tag = soup.find_all('p')[1]
siblings = tag.findNextSiblings()
print(siblings)

輸出

[<p>Tutorials Point Python Text 3</p>]

示例2

from bs4 import BeautifulSoup
html = """
<html>
<body>
   <div>
      <h1>Just A Simple Test Heading 1</h1>
      <p>Tutorials Point Python Text 1</p>
      <h2>Just A Simple Test Heading 2</h2>
      <p>Tutorials Point Python Text 2</p>
      <h3>Heading 3</h3>
      <p>Tutorials Point Python Text 3</p>
   </div>
</body>
</html>
"""

soup = BeautifulSoup(html, "html.parser")
tag = soup.find('h2')
siblings = tag.find_next_siblings()
print(siblings)

輸出

[<p>Tutorials Point Python Text 2</p>, <h3>Heading 3</h3>, <p>Tutorials Point Python Text 3</p>]

在這裡,BeautifulSoup用於提取網頁的HTML內容,然後使用find()方法在HTML中找到'h2'標籤。find_next_siblings()方法可以方便地找到'h2'標籤的所有兄弟節點。

  • 首先匯入必要的模組,BeautifulSouprequests

  • 使用requests模組向要抓取的網站的URL提交GET請求。使用response物件的.text屬性提取頁面的HTML內容。

  • 呼叫BeautifulSoup函式時,傳遞HTML文字並指定"html.parser"解析器。

  • 使用find()函式查詢'h2'標籤,然後將結果儲存在tag變數中。

  • 使用find_next_siblings()方法查詢'h2'標籤的所有兄弟節點,並將它們儲存在siblings變數中。

  • 列印兄弟節點

示例3

from bs4 import BeautifulSoup
import requests

# Send a GET request to the URL
url = 'https://example.com'
response = requests.get(url)

# Extract the HTML content
html = response.text

# Parse the HTML content with BeautifulSoup
soup = BeautifulSoup(html, "html.parser")

# Find the 'h2' tag
tag = soup.find('h2')

# Find the siblings of the 'h2' tag
siblings = tag.find_next_siblings()

# Print the siblings
print(siblings)

應用

  • 網頁抓取 - 如果你試圖從網頁中提取資訊,你可能希望在提取其兄弟節點之前找到網頁上的特定標籤。

  • 資料分析 - 如果你有一個包含資料的較大的HTML檔案,你可能希望找到特定的標籤,然後刪除其兄弟節點以進行進一步的調查。

  • 自動化測試 - 在測試網路應用程式時,可以查詢特定標籤,然後檢查其兄弟節點是否滿足特定要求。

結論

Python包BeautifulSoup簡化了從HTML和XML檔案中提取資料。我們可以使用find next_siblings()函式快速找到特定標籤的兄弟節點並收集重要資料。此方法具有多種用途,包括自動化測試、資料分析和網路抓取。此外,BeautifulSoup還提供了多種方法,如find_all()、find_parent()和find_previous_sibling(),用於遍歷HTML或XML樹結構。這些技術使我們能夠自動化繁瑣的過程並有效地檢索所需的資料。

更新於:2023年5月9日

1K+ 次瀏覽

啟動你的職業生涯

完成課程獲得認證

開始學習
廣告