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

如何使用BeautifulSoup擷取可見網頁文字?

DDD
發布: 2024-11-25 18:41:09
原創
797 人瀏覽過

How to Extract Visible Webpage Text Using BeautifulSoup?

使用BeautifulSoup 提取可見網頁文本

許多網頁抓取任務涉及檢索網頁的可見文本內容,不包括腳本等元素,註釋和CSS 樣式。使用 BeautifulSoup,透過正確的方法可以輕鬆實現這一點。

使用 findAll() 函數時會出現一個常見問題,因為它會檢索所有文字節點,包括隱藏在不需要的元素中的節點。為了解決這個問題,我們可以定義一個自訂過濾器來排除特定的標籤和評論。

以下程式碼舉例說明了這種方法:

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))
登入後複製

tag_visible 函數檢查文字的父元素是否節點符合任何不需要的標籤或節點是否是註解。然後,通過此篩選器的節點將使用 u" ".join(t.strip() for t invisible_texts) 將可見文字組合成單一字串。

此方法僅有效地從一個網頁,省略腳本和評論等不必要的元素。

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

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