Heim >Backend-Entwicklung >Python-Tutorial >Wie extrahiere ich mit BeautifulSoup nur sichtbaren Text aus Webseiten?

Wie extrahiere ich mit BeautifulSoup nur sichtbaren Text aus Webseiten?

Susan Sarandon
Susan SarandonOriginal
2024-11-14 18:56:02242Durchsuche

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

Extrahieren von Webseitentext mit BeautifulSoup: Exklusives Extrahieren von sichtbarem Text

Web Scraping beinhaltet häufig das Abrufen bestimmter Textinhalte von Webseiten. Bei Verwendung von BeautifulSoup, einer weit verbreiteten HTML-Parsing-Bibliothek, stehen Sie möglicherweise vor der Herausforderung, nur den sichtbaren Text auf einer Webseite zu extrahieren und unerwünschte Elemente wie Skripte, Kommentare und CSS auszuschließen.

Sichtbaren Text identifizieren

Um festzustellen, ob ein bestimmtes HTML-Element sichtbaren Text enthält, können Sie die Funktion tag_visible verwenden. Diese Funktion prüft, ob das übergeordnete Element des Zielelements innerhalb eines bestimmten Satzes ausgeschlossener Tags (z. B. Stil, Skript, Kopf) liegt oder ob das Zielelement ein Kommentar ist. Wenn eine der Bedingungen erfüllt ist, gibt die Funktion „False“ zurück und gibt an, dass das Element nicht als sichtbar gilt.

Sichtbaren Text extrahieren

Um den sichtbaren Text aus einer Webseite zu extrahieren, Befolgen Sie diese Schritte:

  1. Erstellen Sie ein BeautifulSoup-Objekt aus dem HTML-Körper.
  2. Suchen Sie den gesamten Text im HTML mit der Methode findAll(text=True).
  3. Filtern Sie den extrahierten Text mithilfe der tag_visible-Funktion, um unerwünschte Elemente zu entfernen.
  4. Fügen Sie die sichtbaren Textzeichenfolgen zusammen und entfernen Sie führende und nachgestellte Leerzeichen.

Beispielverwendung

Der folgende Code zeigt, wie Sie diese Techniken verwenden, um sichtbaren Text aus einer Webseite zu extrahieren:

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))

Durch die Nutzung dieses Ansatzes können Sie sichtbaren Text effektiv von Webseiten entfernen und irrelevante Inhalte ausschließen aus Skripten, Kommentaren und anderen versteckten Elementen.

Das obige ist der detaillierte Inhalt vonWie extrahiere ich mit BeautifulSoup nur sichtbaren Text aus Webseiten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn