首頁 > 後端開發 > Python教學 > 如何使用 BeautifulSoup 從網頁中僅提取可見文字?

如何使用 BeautifulSoup 從網頁中僅提取可見文字?

Susan Sarandon
發布: 2024-11-14 18:56:02
原創
216 人瀏覽過

How to Extract Only Visible Text from Web Pages Using BeautifulSoup?

使用 BeautifulSoup 進行網頁文字擷取:專門擷取可見文字

網頁抓取通常涉及從網頁中擷取特定文字內容。使用廣泛使用的 HTML 解析庫 BeautifulSoup,您可能會遇到僅提取網頁上可見文字的挑戰,排除腳本、註釋和 CSS 等不需要的元素。

識別可見文本

要確定特定 HTML 元素是否包含可見文本,可以使用 tag_visible 函數。此函數檢查目標元素的父元素是否在一組特定的排除標籤(例如樣式、腳本、頭部)內,或者目標元素是否為註解。如果滿足任一條件,函數將傳回 False,表示該元素不被視為可見。

提取可見文本

要從網頁中提取可見文本,請按照以下步驟操作:

  1. 從HTML 主體建立一個BeautifulSoup對象。
  2. 使用 findAll(text=True) 方法來尋找 HTML 中的所有文字。
  3. 使用 tag_visible 函數過濾提取的文字以消除不需要的元素。
  4. 將可見文字字串連接在一起,刪除前導和尾隨空格。

用法示例

下面的代碼演示瞭如何使用這些技術從網頁中提取可見文本:

from bs4 import BeautifulSoup
from bs4.element import Comment
import urllib.request

def tag_visible(element):
    if element.parent.name in ['style', 'script', 'head', 'title', 'meta', '[document]']:
        return False
    if isinstance(element, Comment):
        return False
    return True

def text_from_html(body):
    soup = BeautifulSoup(body, 'html.parser')
    texts = soup.findAll(text=True)
    visible_texts = filter(tag_visible, texts)
    return u" ".join(t.strip() for t in visible_texts)

html = urllib.request.urlopen('http://www.nytimes.com/2009/12/21/us/21storm.html').read()
print(text_from_html(html))
登入後複製

通過利用這種方法,您可以有效地從網頁中抓取可見文本,排除不相關的內容來自腳本、評論和其他隱藏元素。

以上是如何使用 BeautifulSoup 從網頁中僅提取可見文字?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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