如何使用 Python 從本地 HTML 檔案中抓取資料?


可以使用 Beautiful Soup 和 Python 檔案處理技術提取本地 HTML 檔案的資料。Beautiful Soup 允許我們解析 HTML 文件並瀏覽其結構,而檔案處理則使我們能夠從本地檔案獲取 HTML 內容。透過結合這些工具,我們可以學習如何從儲存在我們計算機上的 HTML 檔案中提取有價值的資料。在本文中,我們將瞭解如何使用 Python 從本地 HTML 檔案中抓取資料。

前提條件

在瞭解如何從本地 HTML 檔案中抓取資料之前,請確保您的機器上已安裝 Python。此外,建議您具備 Python 程式設計和 HTML 結構的基礎知識。

安裝 Python 庫

要從 HTML 檔案中提取資料,我們將使用以下 Python 庫

  • Beautiful Soup − 一個功能強大的庫,用於解析 HTML 和 XML 檔案。

  • Requests − 一個用於發出 HTTP 請求的庫。

您可以使用 pip(Python 的包安裝程式)在您的終端或命令提示符中執行以下命令來安裝這些庫:

pip install beautifulsoup4
pip install requests

理解 HTML 結構

HTML 檔案使用標籤和屬性構建,這些標籤和屬性定義文件中的元素。為了有效地抓取資料,我們需要了解結構並在 HTML 檔案中找到相關資料。熟悉 HTML 標籤,例如 <div>、<p>、<table> 和屬性,例如 class 和 id,因為它們對於提取資料至關重要。

在 Python 中載入 HTML 檔案

在提取資料之前,我們需要將 HTML 檔案載入到我們的 Python 指令碼中。requests 庫允許我們從本地檔案獲取 HTML 內容。為此,我們使用 get() 方法並將檔案路徑作為引數傳遞。

import requests

file_path = 'path/to/your/file.html'
response = requests.get('file://' + file_path)
html_content = response.text

從 HTML 檔案中提取資料

要從 HTML 檔案中提取資料,我們將使用 Beautiful Soup 庫。Beautiful Soup 提供了一個易於使用的介面來解析 HTML 並瀏覽其元素。它允許我們搜尋特定標籤、檢索屬性和提取文字資料。

第一步是從我們之前獲取的 HTML 內容建立一個 Beautiful Soup 物件。我們透過將 HTML 內容和解析器庫(通常為“html.parser”)作為引數傳遞來實現此目的。

from bs4 import BeautifulSoup

soup = BeautifulSoup(html_content, 'html.parser')

從本地 HTML 檔案抓取資料

例如,假設我們有一個名為“demo.html”的 HTML 檔案,其結構如下。

<html>
  <body>
    <div class="container">
      <h1>Scraping Example</h1>
      <ul>
        <li>Item 1</li>
        <li>Item 2</li>
        <li>Item 3</li>
      </ul>
    </div>
  </body>
</html>

我們需要從這個 HTML 檔案中提取 <h1> 標籤內的文字和列表項 (<li> 標籤)。以下是我們可以實現此目的的方法。

示例

在下面的示例中,我們首先開啟由 file_path 變數指定 HTML 檔案並讀取其內容。然後使用 HTML 內容建立 BeautifulSoup 物件,允許我們解析和瀏覽 HTML 結構。程式碼提取 <h1> 標籤內的文字並將其列印為標題。它還查詢所有 <li> 標籤,遍歷它們並列印每個列表項的文字。此過程能夠提取 HTML 檔案中的特定資料以進行進一步處理或分析。

from bs4 import BeautifulSoup

file_path = 'demo.html'

# Open the HTML file and read its content
with open(file_path, 'r') as file:
    html_content = file.read()

# Create a Beautiful Soup object
soup = BeautifulSoup(html_content, 'html.parser')

# Extract the heading text
heading = soup.find('h1').text
print("Heading:", heading)

# Extract the list items
list_items = soup.find_all('li')
print("List Items:")
for item in list_items:
    print(item.text)

輸出

Heading: Scraping Example
List Items:
Item 1
Item 2
Item 3

處理更復雜的 HTML 結構

上面的示例演示了基本的 HTML 抓取。但是,現實世界的 HTML 檔案可能更復雜,包含巢狀元素、屬性和不同的結構。為了處理這種情況,您可能需要使用 Beautiful Soup 提供的不同方法(例如 find_all()、find_next() 和 select())來遍歷 HTML 結構。嘗試使用這些方法並參考 Beautiful Soup 文件以瞭解更高階的抓取技術。

結論

在本文中,我們討論瞭如何使用 Python 的 Beautiful Soup 和 requests 庫從本地 HTML 檔案中抓取資料。透過結合 Python 的檔案處理功能和 Beautiful Soup 的 HTML 解析功能,我們可以從本地機器上儲存的 HTML 檔案中提取有價值的資訊。

更新於:2023年10月13日

2K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告