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