Beautifulsoup ist eine Python-Bibliothek, die das Parsen und Extrahieren von Informationen aus HTML- und XML-Dokumenten vereinfacht. Sie ist besonders nützlich für Web-Scraping-Aufgaben, bei denen Du Daten aus Webseiten extrahieren möchtest.
Installation und Import
Um Beautifulsoup zu verwenden, musst Du zunächst die Bibliothek und ihren Abhängigkeiten installieren:
“`
pip install beautifulsoup4
pip install lxml
“`
Danach kannst Du Beautifulsoup in Deinem Python-Code importieren:
from bs4 import BeautifulSoup
Ein HTML-Dokument parsen
Um ein HTML-Dokument mit Beautifulsoup zu parsen, erstellst Du zunächst ein `BeautifulSoup`-Objekt und übergibst das HTML als String:
html = '''
<html>
<head><title>My Title</title></head>
<body>
<h1>Welcome to my website!</h1>
<p>Here's some more information about me:</p>
<ul>
<li>My hobbies include reading, programming, and hiking.</li>
<li>I have a pet cat named Whiskers.</li>
</ul>
</body>
</html>
'''
soup = BeautifulSoup(html, 'lxml')
Elemente auswählen und extrahieren
Mit Beautifulsoup kannst Du HTML-Elemente auf verschiedene Arten auswählen und extrahieren. Einige gängige Methoden sind:
– `find()`: Finde das erste Vorkommen eines bestimmten Elements.
– `find_all()`: Finde alle Vorkommen eines bestimmten Elements.
– `select()`: Wähle Elemente basierend auf CSS-Selektoren aus.
# Finde das <title>-Element
title = soup.find('title')
print(title.text)
# Finde alle <li>-Elemente
list_items = soup.find_all('li')
for item in list_items:
print(item.text)
# Wähle Elemente mit CSS-Selektoren aus
headings = soup.select('h1, h2, h3, h4, h5, h6')
for heading in headings:
print(heading.text)
Attribute extrahieren
Du kannst auch Attribute von HTML-Elementen extrahieren. Dazu verwendest Du einfach die eckige Klammer-Syntax und den Attributnamen:
html = '''
<a href="https://example.com">Visit our website</a>
'''
soup = BeautifulSoup(html, 'lxml')
link = soup.find('a')
href = link['href']
print(href
“`
Navigieren im HTML-Baum
Beautifulsoup ermöglicht es Dir, im HTML-Baum zu navigieren, um spezifische Elemente zu finden oder deren Inhalt zu extrahieren. Einige nützliche Methoden und Attribute sind:
– `.parent`: Das Elternelement eines Elements.
– `.children`: Die Kind-Elemente eines Elements.
– `.next_sibling` und `.previous_sibling`: Die benachbarten Elemente eines Elements.
html = '''
<div>
<p>First paragraph</p>
<p>Second paragraph</p>
<p>Third paragraph</p>
</div>
'''
soup = BeautifulSoup(html, 'lxml')
second_paragraph = soup.find_all('p')[1]
previous_paragraph = second_paragraph.previous_sibling
next_paragraph = second_paragraph.next_sibling
print(previous_paragraph.text)
print(next_paragraph.text)
Beispiel: Web-Scraping
In diesem Beispiel zeigen wir, wie Du Beautifulsoup verwenden kannst, um eine Liste von Überschriften aus einer Webseite zu extrahieren:
import requests
from bs4 import BeautifulSoup
url = 'https://example.com'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
headings = soup.select('h1, h2, h3, h4, h5, h6')
for heading in headings:
print(heading.text)
Fazit
Beautifulsoup ist eine leistungsstarke und benutzerfreundliche Bibliothek zum Parsen und Extrahieren von Informationen aus HTML- und XML-Dokumenten. Mit ihren vielfältigen Funktionen und Methoden kannst Du effizient durch den HTML-Baum navigieren, Elemente auswählen, Attribute extrahieren und den Inhalt bearbeiten. Dank ihrer Flexibilität eignet sich Beautifulsoup hervorragend für Web-Scraping-Aufgaben und die Arbeit mit strukturierten Dokumenten.