Entdecken Sie die Kunst der schnellen Datenerfassung von verschiedenen Websites, indem Sie Web Scraping mit Python beherrschen. Sparen Sie Zeit und Mühe mit diesen wesentlichen Fähigkeiten!
Sehen Sie sich unser Tutorial zum Web-Scraping mit Python an
Beim Web Scraping geht es darum, Daten aus dem Web zu extrahieren. Ein Web Scraper ist ein Tool, das Web Scraping durchführt. Python gehört zu den einfachsten existierenden Skriptsprachen und verfügt über eine Vielzahl von Web-Scraping-Bibliotheken. Das macht sie zur perfekten Programmiersprache für Web Scraping. Python Web Scraping erfordert nur wenige Zeilen Code!
In diesem Tutorial lernen Sie Schritt für Schritt, wie Sie einen einfachen Python-Scraper erstellen. Diese Anwendung durchsucht eine gesamte Website, extrahiert Daten von jeder Seite und exportiert diese in eine CSV-Datei. In diesem Tutorial erfahren Sie, welche die besten Python-Bibliotheken für Data Scraping sind, welche Sie verwenden sollten und wie Sie sie einsetzen können. Folgen Sie diesem Tutorial Schritt für Schritt und lernen Sie, wie Sie ein Python-Skript zum Web Scraping erstellen.
Inhaltsangabe:
- Voraussetzungen
- Die besten Python-Bibliotheken für Web Scraping.
- Erstellen eines Web Scrapers in Python
- Fazit
- FAQ
Voraussetzungen
Um einen Python-Web-Scraper zu erstellen, benötigen Sie die folgenden Voraussetzungen:
- Python 3.4+
- pip
Beachten Sie, dass pip standardmäßig in Python Version 3.4 oder höher enthalten ist. Sie müssen es also nicht manuell installieren. Falls Sie Python noch nicht auf Ihrem Computer installiert haben, befolgen Sie bitte die nachstehende Anleitung für Ihr Betriebssystem.
macOS
Früher war Python 2.7 auf Macs vorinstalliert, doch das ist nicht mehr der Fall. Diese Version ist inzwischen veraltet.
Wenn Sie mit der neuesten Version von Python arbeiten möchten, muss diese manuell installiert werden. Laden Sie dazu den Installer herunter, starten Sie ihn mit einem Doppelklick und führen Sie den Installationsassistenten aus.
Windows
Laden Sie den Python-Installer herunter und führen Sie ihn aus. Stellen Sie während der Ausführung des Installationsassistenten sicher, dass Sie das Kontrollkästchen „Add python.exe to PATH“ wie unten gezeigt aktivieren:
Auf diese Weise erkennt Windows automatisch die Befehle python und pip im Terminal. Genauer betrachtet, ist pip ein Paketmanager für Python-Pakete.
Linux
Bei den meisten Linux-Distributionen ist Python bereits vorinstalliert, wobei es sich jedoch möglicherweise nicht um die neueste Version handelt. Der Befehl zum Installieren oder Aktualisieren von Python unter Linux variiert je nach Paketmanager. Bei Debian-basierten Linux-Distributionen führen Sie folgenden Befehl aus:
sudo apt-get install python3
Öffnen Sie unabhängig von Ihrem Betriebssystem das Terminal und stellen Sie sicher, dass Python erfolgreich installiert wurde:
python --version
Das Ergebnis sollte in etwa wie folgt aussehen:
Python 3.11.0
Sie sind nun bereit, Ihren ersten Python Web Scraper zu erstellen. Aber zuerst brauchen Sie eine Python Web Scraping Bibliothek!
Die besten Python-Bibliotheken für Web Scraping.
Sie können ein Web-Scraping-Skript von Grund auf mit Python Vanilla erstellen, aber das ist nicht die ideale Lösung. Python ist schließlich für seine breite Auswahl an Paketen bekannt – und es stehen zahlreiche Web-Scraping-Bibliotheken zur Verfügung. Werfen wir daher nun einen Blick auf die wichtigsten!
Requests
Mit der Requests-Bibliothek können Sie HTTP-Anfragen in Python ausführen. Im Vergleich zu den Standard-HTTP-Bibliotheken von Python erleichtert Requests das Senden von HTTP-Anfragen. Requests spielt in einem Python Web Scraping Projekt eine zentrale Rolle. Das liegt daran, dass Sie die in einer Webseite enthaltenen Daten, die gescrapt werden sollen, zunächst über einen HTTP-GET-Request abrufen müssen. Außerdem müssen Sie möglicherweise weitere HTTP-Anfragen an den Server der Zielwebsite stellen.
Sie können Requests mit dem folgenden pip-Befehl installieren:
pip install requests
Beautiful Soup
Die Python-Bibliothek Beautiful Soup erleichtert das Sammeln von Informationen aus Webseiten. Beautiful Soup funktioniert mit jedem HTML- oder XML-Parser und bietet alles, was Sie zum Iterieren, Suchen und Ändern des Parsebaums benötigen. Beachten Sie, dass Sie Beautiful Soup mit html.parser verwenden können, dem Parser, der in der Python-Standardbibliothek enthalten ist und mit dem Sie HTML-Textdateien parsen können. Sie können Beautiful Soup verwenden, um das DOM zu durchlaufen und die benötigten Daten daraus zu extrahieren.
Sie können Beautiful Soup mit pip wie folgt installieren:
pip install beautifulsoup4
Selenium
Selenium ist ein fortschrittliches, automatisiertes Open-Source-Testframework, mit dem Sie Operationen auf einer Webseite in einem Browser ausführen können. Mit anderen Worten: Sie können Selenium verwenden, um einen Browser anzuweisen, bestimmte Aufgaben auszuführen. Beachten Sie, dass Sie Selenium aufgrund seiner Headless-Browser-Fähigkeiten auch als Web-Scraping-Bibliothek verwenden können. Falls Sie mit diesem Konzept nicht vertraut sind: Ein Headless Browser ist ein Webbrowser, der ohne eine grafische Benutzeroberfläche (GUI) läuft. Wenn Selenium im Headless-Modus konfiguriert ist, wird der gesteuerte Browser im Hintergrund ausgeführt.
Die in Selenium besuchten Webseiten werden in einem echten Browser gerendert. Daher unterstützt es das Scrapen von Webseiten, die beim Rendern oder Abrufen von Daten auf JavaScript angewiesen sind. Selenium stellt Ihnen alles zur Verfügung, was Sie brauchen, um einen Web Scraper ohne weitere Bibliotheken zu erstellen. Sie können es mit dem folgenden pip-Befehl installieren:
pip install selenium
Erstellen eines Web Scrapers in Python
Im Folgenden lernen Sie, wie man einen Web Scraper in Python erstellt. So sieht die Zielwebsite aus:
Dies ist die Website von Quotes to Scrape, einer Web-Scraping-Sandbox, die eine paginierte Liste mit Zitaten enthält.
Das Ziel dieses Tutorials besteht darin, zu lernen, wie man alle Zitate extrahiert. Für jedes Zitat werden Sie lernen, wie Sie den Text, den Autor und die Liste der Tags auslesen können. Anschließend werden die gescrapten Daten in CSV konvertiert.
Wie Sie sehen können, ist Quotes to Scrape nichts anderes als eine Testumgebung für Web Scraping. Sie enthält insbesondere eine paginierte Liste von Quotes. Der Python-Web-Scraper, den Sie erstellen werden, wird alle auf jeder Seite enthaltenen Quotes abrufen und sie als CSV-Daten zurückgeben.
Schritt 1: Auswahl der richtigen Python-Scraping-Bibliothek
Zuallererst sollten Sie wissen, welche Web-Scraping-Bibliotheken in Python zum Erreichen Ihres Ziels am besten geeignet sind. Besuchen Sie hierfür die Zielwebsite in Ihrem Website-Browser. Klicken Sie mit der rechten Maustaste auf den Hintergrund und wählen Sie „Untersuchen“. Daraufhin öffnet sich das DevTools-Browserfenster. Wechseln Sie zur Registerkarte Netzwerk und laden Sie die Seite neu.
Sie werden feststellen, dass die Zielwebsite keine Fetch/XHR-Anfrage durchführt.
Das bedeutet, dass Quotes to Scrape für den dynamischen Abruf von Daten nicht auf JavaScript angewiesen ist. Mit anderen Worten: Die vom Server zurückgegebenen Seiten enthalten bereits die gewünschten Daten. Dies ist bei Websites mit statischen Inhalten der Fall.
Da die Zielwebsite nicht auf JavaScript angewiesen ist, um die Seite zu rendern oder Daten abzurufen, brauchen Sie Selenium nicht, um sie zu scrapen. Sie können es trotzdem verwenden, doch möchten wir davon abraten: Der Grund dafür ist, dass Selenium Webseiten in einem Browser öffnet. Da dies Zeit und Ressourcen benötigt, führt Selenium einen Leistungs-Overhead ein. Sie können dies vermeiden, indem Sie Beautiful Soup zusammen mit Requests verwenden.
Nachdem Sie nun wissen, welche Python-Web-Scraping-Bibliotheken am besten geeignet sind, erklären wir Ihnen, wie Sie mit Beautiful Soup einen einfachen Scraper erstellen können!
Schritt 2: Initialisieren eines Python-Projekts
Bevor Sie mit dem Schreiben der ersten Codezeile beginnen, müssen Sie Ihr Python Web Scraping Projekt einrichten. Technisch gesehen brauchen Sie nur eine einzige .py-Datei. Die Verwendung einer fortgeschrittenen IDE (Integrated Development Environment) erleichtert Ihnen jedoch das Programmieren. Hier erfahren Sie, wie Sie ein Python-Projekt in PyCharm einrichten, aber auch jede andere Python IDE ist hierfür geeignet.
Öffnen Sie PyCharm und wählen Sie „Datei > Neues Projekt…“. Im Popup-Fenster „Neues Projekt“ wählen Sie „Pure Python“ und erstellen Sie ein neues Projekt.
Sie können Ihr Projekt zum Beispiel python-web-scraper nennen. Klicken Sie auf „Erstellen“. Sie haben nun Zugang zu Ihrem leeren Python-Projekt. Standardmäßig wird PyCharm eine Datei main.py initialisieren. Benennen Sie diese der Übersichtlichkeit halber in scraper.py um. So sieht Ihr Projekt dann aus:
Wie Sie sehen können, initialisiert PyCharm die Python-Datei automatisch mit einigen Codezeilen. Löschen Sie diese, um ganz von vorne zu beginnen.
Installieren Sie anschließend die Abhängigkeiten des Projekts. Sie können Requests und Beautiful Soup installieren, indem Sie den folgenden Befehl im Terminal aufrufen:
pip install requests beautifulsoup4
Damit werden die beiden Bibliotheken auf einmal installiert. Warten Sie, bis der Installationsprozess abgeschlossen ist. Jetzt können Sie Beautiful Soup und Requests verwenden, um Ihren Web Crawler und -Web Scraper in Python zu erstellen. Stellen Sie sicher, dass Sie die beiden Bibliotheken importieren, indem Sie die folgenden Zeilen am Anfang Ihrer scraper.py-Skriptdatei hinzufügen:
import requests
from bs4 import BeautifulSoup
PyCharm zeigt diese beiden Zeilen in grau an, da die Bibliotheken im Code nicht verwendet werden. Wenn sie rot unterstrichen sind, bedeutet dies, dass bei der Installation etwas schief gelaufen ist. Versuchen Sie sie in diesem Fall erneut zu installieren.
Klasse! Nun können Sie mit dem Schreiben der Python-Web-Scraping-Logik beginnen.
Schritt 2: Verbinden mit der Ziel-URL
Zuerst muss in einem Web Scraper eine Verbindung zu Ihrer Zielwebsite hergestellt werden. Rufen Sie zunächst die vollständige URL der Zielwebsite von Ihrem Webbrowser ab. Stellen Sie sicher, dass Sie auch http:// bzw. https:// kopieren. HTTP-Protokollabschnitt. In diesem Fall handelt es sich um die gesamte URL der Zielwebsite:
https://quotes.toscrape.com
Mit der folgenden Codezeile können Sie nun Anfragen zum Herunterladen einer Webseite verwenden:
page = requests.get('https://quotes.toscrape.com')
Diese Zeile weist das Ergebnis einfach der Methode request.get()
der variablen Seite zu. Im Hintergrund führt request.get() eine GET-Anforderung unter Verwendung der als Parameter übergebenen URL aus. Anschließend wird ein Response-Objekt zurückgegeben, das die Serverantwort auf die HTTP-Anfrage enthält.
Wenn die HTTP-Anfrage erfolgreich ausgeführt wurde, enthält page.status_code den Wert 200. Der HTTP-Statuscode 200 OK zeigt an, zeigt an, dass die HTTP-Anfrage erfolgreich ausgeführt wurde. Ein HTTP-Statuscode 4xx oder 5xx weist auf einen Fehler hin. Dafür kann es mehrere Gründe geben. Bedenken Sie jedoch, dass die meisten Websites Anfragen blockieren, die keinen gültigen User-Agent enthalten. Bei diesem speziellen Header handelt es sich um eine Zeichenfolge, die die Anwendung und die Version des Betriebssystems angibt, von der eine Anfrage stammt. Erfahren Sie mehr über User-Agents für Web Scraping.
Sie können einen gültigen User-Agent-Header in Anfragen wie folgt festlegen:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
page = requests.get('https://quotes.toscrape.com', headers=headers
Requests wird nun die HTTP-Anfrage mit den als Parameter übergebenen Headern ausführen.
Worauf Sie achten sollten, ist die Eigenschaft page.text
. Diese enthält das vom Server zurückgegebene HTML-Dokument im String-Format. Geben Sie die text
-Eigenschaft an Beautiful Soup weiter, um Daten aus der Web-Seite zu extrahieren. Hier erfahren Sie, wie das geht.
Achten Sie unbedingt auf die Eigenschaft page.text. Diese enthält das vom Server zurückgegebene HTML-Dokument im String-Format. Geben Sie die text-Eigenschaft an Beautiful Soup weiter, um Daten aus der Webseite zu extrahieren. Hier erfahren Sie, wie das geht.
Schritt 3: Parsen des HTML-Dokuments
Zum Parsen des vom Server nach der GET-Anfrage zurückgegebenen HTML-Dokuments übergeben Sie page.text an den BeautifulSoup()
-Konstruktor:
soup = BeautifulSoup(page.text, 'html.parser')
Der zweite Parameter gibt den Parser an, den Beautiful Soup verwenden wird.
Die Soup-Variable enthält nun ein BeautifulSoup-Objekt. Das ist eine Baumstruktur, die durch das Parsen des in page.text enthaltenen HTML-Dokuments mit dem in Python integrierten html.parser erzeugt wurde.
Nun können Sie damit das gewünschte HTML-Element auf der Seite auswählen. Schauen wir uns an, wie das geht!
Schritt 4: Auswahl von HTML-Elementen mit Beautiful Soup
Beautiful Soup bietet Ihnen für die Auswahl von Elementen aus dem DOM verschiedene Möglichkeiten. Die Ausgangspunkte sind folgende:
- find(): Gibt das erste HTML-Element zurück, das der ggf. vorhandenen Eingabeselektor-Strategie entspricht.
- find_all(): Gibt eine Liste von HTML-Elementen zurück, die der als Parameter übergebenen Selektorbedingung entsprechen.
Ausgehend von den an sie übergebenen Parametern suchen diese beiden Methoden auf unterschiedliche Weise nach Elementen auf der Seite. Sie können HTML-Elemente wie folgt auswählen:
- Nach Tag:
# get all <h1> elements
# on the page
h1_elements = soup.find_all('h1')
- Nach ID:
# get the element with id="main-title"
main_title_element = soup.find(id='main-title')
- Nach Text:
# find the footer element
# based on the text it contains
footer_element = soup.find(text={'Powered by WordPress'})
- Nach Attribut:
# find the email input element
# through its "name" attribute
email_element = soup.find(attrs={'name': 'email'})
- Nach Klasse:
# find all the centered elements
# on the page
centered_element = soup.find_all(class_='text-center')
Durch die Verkettung dieser Methoden können Sie jedes HTML-Element aus der Seite extrahieren. Sehen Sie sich das unten stehende Beispiel an:
# get all "li" elements
# in the ".navbar" element
soup.find(class_='navbar').find_all('li')
Um das Ganze zu vereinfachen, verfügt Beautiful Soup auch über die Methode select(). Diese ermöglicht es Ihnen, einen CSS-Selektor direkt anzuwenden:
# get all "li" elements
# in the ".navbar" element
soup.select('.navbar > li')
Beachten Sie, dass XPath-Selektoren zum Zeitpunkt der Erstellung dieses Artikels nicht unterstützt werden.
Es ist wichtig zu wissen, dass Sie zum Extrahieren von Daten aus einer Webseite zunächst die HTML-Elemente ermitteln müssen, die Sie interessieren. Insbesondere ist eine Auswahlstrategie für die Elemente zu definieren, die die gewünschten auszulesenden Daten enthalten.
Dies können Sie mithilfe der Entwicklungswerkzeuge Ihres Browsers erreichen. Klicken Sie in Chrome mit der rechten Maustaste auf das gewünschte HTML-Element und wählen Sie „Untersuchen“. Wählen Sie hierfür in unserem Fall ein Zitat-Element.
Das HTML-Element quote <div>
wird durch die Klasse quote identifiziert, wie Sie hier sehen können. Dieses enthält:
- Den Text des Quotes in einem HTML-Element
<span>
- Den Verfasser des Quotes in einem HTML-Element
<small>
- Eine Liste von Tags in einem
<div>
-Element, die jeweils in einem<a>
-HTML-Element enthalten sind
Im Einzelnen können Sie diese Daten mit den folgenden CSS-Selektoren in .quote
extrahieren:
.text
.author
.tags .tag
Schritt 5: Extrahieren von Daten aus den Elementen
Zunächst benötigen Sie eine Datenstruktur, in der die gescrapten Daten gespeichert werden. Initialisieren Sie daher eine Array-Variable.
quotes = []
Verwenden Sie anschließend soup, um die Zitat-Elemente aus dem DOM zu extrahieren, indem Sie den zuvor definierten CSS-Selektor .quote anwenden:
quote_elements = soup.find_all('div', class_='quote')
Die Methode find_all() gibt die Liste aller
for quote_element in quote_elements:
# extract the text of the quote
text = quote_element.find('span', class_='text').text
# extract the author of the quote
author = quote_element.find('small', class_='author').text
# extract the tag <a> HTML elements related to the quote
tag_elements = quote_element.select('.tags .tag')
# store the list of tag strings in a list
tags = []
for tag_element in tag_elements:
tags.append(tag_element.text)
Die Methode find() von Beautiful Soup ruft das gewünschte einzelne HTML-Element ab. Da es sich bei den mit dem Zitat verknüpften Tag-Strings um mehr als einen handelt, sollten Sie sie in einer Liste speichern.
Dann können Sie die gescrapten Daten in ein Wörterbuch umwandeln und dieses wie folgt an die Zitatliste anhängen:
quotes.append(
{
'text': text,
'author': author,
'tags': ', '.join(tags) # merge the tags into a "A, B, ..., Z" string
}
)
Wenn Sie die Daten in einem strukturierten Wörterbuch speichern, sind sie leichter zugänglich und besser verständlich.
Klasse! Sie haben gerade gelernt, wie Sie alle Zitatdaten aus einer einzigen Seite extrahieren können. Denken Sie aber daran, dass die Zielwebsite aus mehreren Seiten besteht. Daher sehen wir uns nun an, wie Sie die gesamte Website crawlen können.
Schritt 6: Implementieren der Crawling-Logik
Am unteren Ende der Startseite finden Sie ein -HTML-Element „Next →“, das auf die nächste Seite weiterleitet. Dieses HTML-Element ist auf allen Seiten – außer auf der letzten – enthalten. Ein solches Szenario ist bei jeder paginierten Website üblich.
Wenn Sie dem Link in diesem HTML-Element folgen, können Sie problemlos durch die gesamte Website navigieren. Beginnen wir also mit der Startseite und sehen wir uns an, wie man die einzelnen Seiten der Zielwebsite durchläuft. Sie müssen nur nach dem
Sie können die Crawling-Logik wie folgt implementieren:
# the URL of the home page of the target website
base_url = 'https://quotes.toscrape.com'
# retrieve the page and initializing soup...
# get the "Next →" HTML element
next_li_element = soup.find('li', class_='next')
# if there is a next page to scrape
while next_li_element is not None:
next_page_relative_url = next_li_element.find('a', href=True)['href']
# get the new page
page = requests.get(base_url + next_page_relative_url, headers=headers)
# parse the new page
soup = BeautifulSoup(page.text, 'html.parser')
# scraping logic...
# look for the "Next →" HTML element in the new page
next_li_element = soup.find('li', class_='next')
Der „Wo-Zyklus“ durchläuft jede Seite, bis es keine nächste Seite mehr gibt. Insbesondere extrahiert er die relative URL der nächsten Seite und verwendet sie, um die URL der nächsten zu scrapenden Seite zu erstellen. Dann wird die nächste Seite heruntergeladen. Anschließend wird sie gescrapt und die Logik wird wiederholt.
Großartig! Jetzt wissen Sie, wie Sie eine ganze Website scrapen können. Nun bleibt nur noch zu lernen, wie man die extrahierten Daten in ein nützlicheres Format wie CSV konvertiert.
Schritt 7: Extrahieren der gescrapten Daten in eine CSV-Datei
Sehen wir uns an, wie man die Liste der Wörterbücher, die die gecrawlten Zitat-Daten enthalten, in eine CSV-Datei exportiert. Das erreichen Sie mit den folgenden Zeilen:
import csv
# scraping logic...
# reading the "quotes.csv" file and creating it
# if not present
csv_file = open('quotes.csv', 'w', encoding='utf-8', newline='')
# initializing the writer object to insert data
# in the CSV file
writer = csv.writer(csv_file)
# writing the header of the CSV file
writer.writerow(['Text', 'Author', 'Tags'])
# writing each row of the CSV
for quote in quotes:
writer.writerow(quote.values())
# terminating the operation and releasing the resources
csv_file.close()
Dieses Schnipsel schreibt die in der Liste der Wörterbücher enthaltenen Zitat-Daten in eine quotes.csv
-Datei. Beachten Sie, dass csv
Teil der Python-Standardbibliothek ist. Sie können es also importieren und verwenden, ohne eine zusätzliche Abhängigkeit zu installieren.
Konkret bedeutet dies, dass Sie einfach mit open()
eine CSV-Datei erstellen müssen. Dann können Sie diese mit der Funktion writerow()
aus dem Writer-Objekt der csv-Bibliothek ausfüllen. Dadurch wird jedes Zitat-Wörterbuch als CSV-formatierte Zeile geschrieben.
Sie sind von Rohdaten einer Website zu halbstrukturierten Daten in einer CSV-Datei übergegangen. Der Prozess der Datenextraktion ist abgeschlossen, und Sie können nun einen Blick auf den gesamten Python Data Scraper werfen.
Schritt 8: Alles zusammenfügen
So sieht das komplette Python-Skript zum Daten-Scraping aus:
import requests
from bs4 import BeautifulSoup
import csv
def scrape_page(soup, quotes):
# retrieving all the quote <div> HTML element on the page
quote_elements = soup.find_all('div', class_='quote')
# iterating over the list of quote elements
# to extract the data of interest and store it
# in quotes
for quote_element in quote_elements:
# extracting the text of the quote
text = quote_element.find('span', class_='text').text
# extracting the author of the quote
author = quote_element.find('small', class_='author').text
# extracting the tag <a> HTML elements related to the quote
tag_elements = quote_element.find('div', class_='tags').find_all('a', class_='tag')
# storing the list of tag strings in a list
tags = []
for tag_element in tag_elements:
tags.append(tag_element.text)
# appending a dictionary containing the quote data
# in a new format in the quote list
quotes.append(
{
'text': text,
'author': author,
'tags': ', '.join(tags) # merging the tags into a "A, B, ..., Z" string
}
)
# the url of the home page of the target website
base_url = 'https://quotes.toscrape.com'
# defining the User-Agent header to use in the GET request below
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}
# retrieving the target web page
page = requests.get(base_url, headers=headers)
# parsing the target web page with Beautiful Soup
soup = BeautifulSoup(page.text, 'html.parser')
# initializing the variable that will contain
# the list of all quote data
quotes = []
# scraping the home page
scrape_page(soup, quotes)
# getting the "Next →" HTML element
next_li_element = soup.find('li', class_='next')
# if there is a next page to scrape
while next_li_element is not None:
next_page_relative_url = next_li_element.find('a', href=True)['href']
# getting the new page
page = requests.get(base_url + next_page_relative_url, headers=headers)
# parsing the new page
soup = BeautifulSoup(page.text, 'html.parser')
# scraping the new page
scrape_page(soup, quotes)
# looking for the "Next →" HTML element in the new page
next_li_element = soup.find('li', class_='next')
# reading the "quotes.csv" file and creating it
# if not present
csv_file = open('quotes.csv', 'w', encoding='utf-8', newline='')
# initializing the writer object to insert data
# in the CSV file
writer = csv.writer(csv_file)
# writing the header of the CSV file
writer.writerow(['Text', 'Author', 'Tags'])
# writing each row of the CSV
for quote in quotes:
writer.writerow(quote.values())
# terminating the operation and releasing the resources
csv_file.close()
Wie Sie hier gelernt haben, können Sie in weniger als 100 Zeilen Code einen Web Scraper erstellen. Dieses Python-Skript ist in der Lage, eine ganze Website zu crawlen, automatisch alle Daten zu extrahieren und diese in eine CSV-Datei zu exportieren.
Herzlichen Glückwunsch! Sie haben gerade gelernt, wie man mithilfe der Bibliotheken Requests und Beautiful Soup einen Python Web Scraper erstellt!
Schritt 9: Ausführen des Python Web-Scraping-Skripts
Wenn Sie ein PyCharm-Benutzer sind, führen Sie das Skript aus, indem Sie auf die Schaltfläche unten klicken:
Andernfalls starten Sie den folgenden Python-Befehl im Terminal innerhalb des Projektverzeichnisses:
python scraper.py
Warten Sie, bis der Prozess beendet ist. Sie haben nun Zugriff auf eine quotes.csv-Datei. Öffnen Sie die Datei. Sie sollte die folgenden Daten enthalten:
Et voilà! Nun haben Sie alle 100 Zitate, die in der Zielwebsite enthalten sind, in einer einzigen, leicht lesbaren Datei!
Fazit
In diesem Tutorial haben Sie gelernt, wie Web Scraping mit Python funktioniert, was Sie für den Einstieg in Python brauchen und welches die besten Python-Bibliotheken zum Web Scraping sind. Dann haben Sie gesehen, wie man Beautiful Soup und Requests verwendet, um eine Web-Scraping-Anwendung anhand eines realen Beispiels zu erstellen. Wie Sie wissen, sind für Web Scraping in Python nur ein paar Zeilen Code erforderlich.
Web Scraping ist jedoch mit einigen Herausforderungen verbunden. Insbesondere Anti-Bot- und Anti-Scraping-Technologien werden immer beliebter. Aus diesem Grund benötigen Sie ein fortschrittliches Web-Scraping-Tool, das von Bright Data bereitgestellt wird.
Ein Proxy-Server fungiert als Vermittler zwischen Ihrem Scraping-Skript in X und den Zielwebseiten. Er empfängt Ihre Anfragen, leitet sie an den Zielserver weiter, empfängt die Antworten und sendet sie an Sie zurück. Auf diese Weise sieht die Zielwebsite ihre IP-Adressen und nicht die Ihren. Das bedeutet, dass Ihre IP verborgen bleibt, um ihren Ruf zu bewahren und Ihre Privatsphäre zu schützen, und um Sperren und geografische Beschränkungen zu vermeiden. Dank rotierender Proxies können Sie bei jeder Anfrage frische IPs erhalten, um sogar Systeme mit Ratenbegrenzung zu umgehen.
Es bleibt nur noch, einen zuverlässigen Anbieter auszuwählen, der Ihnen Zugang zu erstklassigen Proxy-Servern mit seriösen IP-Adressen bieten kann. Bright Data ist der weltweit beliebteste Proxy-Anbieter und bedient Dutzende von Fortune-500-Unternehmen sowie über 20.000 Kunden. Sein weltweites Proxy-Netzwerk umfasst:
- Datacenter proxies – Über 770.000 IPs aus Rechenzentren.
- Residential proxies – Über 72 Millionen IPs von privaten Geräten in mehr als 195 Ländern.
- ISP proxies – Über 700.000 IPs von ISP-registrierten Geräten.
- Mobile proxies – Über 7 Millionen IPs aus mobilen Netzwerken.
Keine Kreditkarte erforderlich
FAQ
Python is not only a good choice for web scraping, it is actually considered one of the best languages for that. This is because of its readability and low learning curve. On top of that, it comes with of the largest communities in the IT world and a wide selection of libraries and tools designed for web scraping.
Yes, web scraping and crawling are part of the greater field of data science. Scraping/crawling serves as the foundation for all other by-products that can be derived from structured, and unstructured data. This includes analytics, algorithmic models/output, insights, and ‘applicable knowledge’.
Scraping data from a website using Python entails inspecting the page of your target URL, identifying the data you would like to extract, writing and running the data extraction code, and finally storing the data in your desired format.
The first step to building a Python data scraper is utilizing string methods in order to parse website data, then parsing website data using an HTML parser, and finally interacting with necessary forms and website components.