首頁 > 後端開發 > Python教學 > 如何在 Python 中從 HTML 檔案中提取乾淨的文本,同時避免正規表示式的陷阱?

如何在 Python 中從 HTML 檔案中提取乾淨的文本,同時避免正規表示式的陷阱?

Barbara Streisand
發布: 2024-11-28 19:53:14
原創
716 人瀏覽過

How Can I Extract Clean Text from HTML Files in Python While Avoiding the Pitfalls of Regular Expressions?

使用Python 從HTML 檔案中提取乾淨的文字

當尋求使用Python 從HTML 檔案中提取文字時,重要的是要考慮魯棒性和準確性。雖然正規表示式通常可以完成這項工作,但它們可能會遇到格式不良的 HTML。

對於更強大的解決方案,通常建議使用 Beautiful Soup 等函式庫。然而,使用者可能會遇到不必要的文字的挑戰,例如 JavaScript 來源和不正確的 HTML 實體解釋。

要解決這些問題,需要更全面的方法。

html2text:一個有前途的解決方案

一個有前途的解決方案是 html2text。該程式庫正確處理 HTML 實體並忽略 JavaScript。然而,它產生 Markdown 而不是純文本,需要額外的處理來轉換它。

利用 BeautifulSoup 和自訂程式碼

另一種方法是將 BeautifulSoup 與自訂程式碼。透過刪除不需要的元素(例如腳本和樣式)並利用 get_text() 方法,您可以獲得乾淨的文字表示形式,而無需僅依賴正規表示式。

以下是示範此方法的Python 程式碼片段:

from urllib.request import urlopen
from bs4 import BeautifulSoup

url = "http://news.bbc.co.uk/2/hi/health/2284783.stm"
html = urlopen(url).read()
soup = BeautifulSoup(html, features="html.parser")

# Remove script and style elements
for script in soup(["script", "style"]):
    script.extract()

# Extract text
text = soup.get_text()

# Additional processing to remove unwanted whitespace and split headlines into separate lines
lines = (line.strip() for line in text.splitlines())
chunks = (phrase.strip() for line in lines for phrase in line.split("  "))
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)
登入後複製

這種方法允許您從HTML 檔案中提取乾淨的、人類可讀的文本,而沒有正規表示式或庫可能無法處理所有場景的缺點有效。

以上是如何在 Python 中從 HTML 檔案中提取乾淨的文本,同時避免正規表示式的陷阱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板