Heim > Backend-Entwicklung > Python-Tutorial > Wie extrahiere ich sichtbaren Webseitentext mit BeautifulSoup?

Wie extrahiere ich sichtbaren Webseitentext mit BeautifulSoup?

DDD
Freigeben: 2024-11-25 18:41:09
Original
778 Leute haben es durchsucht

How to Extract Visible Webpage Text Using BeautifulSoup?

Sichtbaren Webseitentext mit BeautifulSoup extrahieren

Viele Web-Scraping-Aufgaben beinhalten das Abrufen des sichtbaren Textinhalts einer Webseite, mit Ausnahme von Elementen wie Skripten, Kommentare und CSS-Stile. Mit BeautifulSoup kann dies mit dem richtigen Ansatz ganz einfach erreicht werden.

Ein häufiges Problem tritt bei der Verwendung der Funktion findAll() auf, da sie alle Textknoten abruft, einschließlich derjenigen, die in unerwünschten Elementen versteckt sind. Um dies zu beheben, können wir einen benutzerdefinierten Filter definieren, um bestimmte Tags und Kommentare auszuschließen.

Der folgende Code veranschaulicht diesen Ansatz:

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))
Nach dem Login kopieren

Die Funktion tag_visible prüft, ob das übergeordnete Element eines Textes ist Knoten mit einem der unerwünschten Tags übereinstimmt oder wenn der Knoten ein Kommentar ist. Knoten, die diesen Filter bestehen, werden dann verwendet, um den sichtbaren Text mithilfe von u" ".join(t.strip() für t in sichtbaren Texten) zu einer einzigen Zeichenfolge zu kombinieren.

Dieser Ansatz extrahiert effektiv nur den sichtbaren Text aus eine Webseite, wobei unnötige Elemente wie Skripte und Kommentare weggelassen werden.

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

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage