English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Web Scraping mit Python: Schritt-für-Schritt-Anleitung

Python-Web-Scraping
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Web Scraping ist die Idee, Informationen von einer Website zu extrahieren und für einen bestimmten Anwendungsfall zu verwenden.

Angenommen, Sie versuchen, eine Tabelle aus einer Webseite zu extrahieren, sie in eine JSON-Datei zu konvertieren und die JSON-Datei zum Erstellen einiger interner Tools zu verwenden. Mit Hilfe von Web Scraping können Sie die gewünschten Daten extrahieren, indem Sie auf bestimmte Elemente einer Webseite abzielen. Web-Scraping mit Python ist eine sehr beliebte Wahl, da Python mehrere Bibliotheken wie BeautifulSoup oder Scrapy bereitstellt, um Daten effektiv zu extrahieren.

Web-Scraping

Die Fähigkeit, Daten effizient zu extrahieren, ist auch als Entwickler oder A. sehr wichtig Datenwissenschaftler. Dieser Artikel wird Ihnen helfen zu verstehen, wie Sie eine Website effektiv schaben und die notwendigen Inhalte erhalten, um sie nach Ihren Bedürfnissen zu manipulieren. Für dieses Tutorial verwenden wir die BeautifulSuppe Paket. Es ist ein trendiges Paket zum Scrapen von Daten in Python.

Why use Python for Web Scraping?

Python ist für viele Entwickler die erste Wahl beim Bau von Web Scrapern. Es gibt viele Gründe, warum Python die erste Wahl ist, aber lassen Sie uns für diesen Artikel drei Hauptgründe diskutieren, warum Python für das Data Scraping verwendet wird.

Bibliotheks- und Community-Support: Es gibt mehrere großartige Bibliotheken wie BeautifulSoup, Scrapy, Selenium usw., die großartige Funktionen zum effektiven Scrapen von Webseiten bieten. Es hat ein hervorragendes Ökosystem für Web Scraping aufgebaut, und da viele Entwickler weltweit bereits Python verwenden, können Sie schnell Hilfe bekommen, wenn Sie nicht weiterkommen.

Automation: Python ist berühmt für seine Automatisierungsfähigkeiten. Wenn Sie versuchen, ein komplexes Tool zu erstellen, das auf Scraping basiert, ist mehr als nur Web Scraping erforderlich. Wenn Sie beispielsweise ein Tool erstellen möchten, das den Preis von Artikeln in einem Online-Shop verfolgt, müssen Sie einige Automatisierungsfunktionen hinzufügen, damit es die Preise täglich verfolgen und zu Ihrer Datenbank hinzufügen kann. Python gibt Ihnen die Möglichkeit, solche Prozesse mit Leichtigkeit zu automatisieren.

Datenvisualisierung: Web Scraping wird von Data Scientists stark genutzt. Data Scientists müssen häufig Daten aus Webseiten extrahieren. Mit Bibliotheken wie Pandas macht Python Datenvisualisierung einfacher aus Rohdaten.

Libraries for Web Scraping in Python

In Python sind mehrere Bibliotheken verfügbar, um das Web Scraping zu vereinfachen. Lassen Sie uns hier die drei beliebtesten Bibliotheken besprechen.

# 1. BeautifulSuppe

Eine der beliebtesten Bibliotheken für Web Scraping. BeautifulSuppe unterstützt Entwickler seit 2004 beim Scraping von Webseiten. Es bietet einfache Methoden zum Navigieren, Durchsuchen und Ändern des Parse-Baums. Beautifulsoup selbst übernimmt auch die Codierung für eingehende und ausgehende Daten. Es ist gut gepflegt und hat eine tolle Community.

# 2. Scrapy

Ein weiteres beliebtes Framework für die Datenextraktion. Scrapy hat mehr als 43000 Sterne auf GitHub. Es kann auch verwendet werden, um Daten von APIs zu kratzen. Es hat auch ein paar interessante integrierte Unterstützung, wie das Versenden von E-Mails.

# 3. Selenium

Selenium ist nicht hauptsächlich eine Web-Scraping-Bibliothek. Stattdessen handelt es sich um ein Browser-Automatisierungspaket. Aber wir können seine Funktionalitäten zum Scrapen von Webseiten leicht erweitern. Es verwendet das WebDriver-Protokoll zur Steuerung verschiedener Browser. Selen ist seit fast 20 Jahren auf dem Markt. Aber mit Selenium können Sie Daten von Webseiten einfach automatisieren und entfernen.

Challenges with Python Web Scraping

Beim Versuch, Daten von Websites zu kratzen, kann man sich vielen Herausforderungen stellen. Es gibt Probleme wie langsame Netzwerke, Anti-Scraping-Tools, IP-basierte Blockierung, Captcha-Blockierung usw. Diese Probleme können beim Versuch, eine Website zu scrapen, massive Probleme verursachen.

Aber Sie können Herausforderungen effektiv umgehen, indem Sie einige Wege gehen. Zum Beispiel in den meisten Fällen ein IP-Adresse wird von einer Website blockiert, wenn in einem bestimmten Zeitintervall mehr als eine bestimmte Anzahl von Anfragen gesendet wird. Um eine IP-Blockierung zu vermeiden, müssen Sie Ihren Scraper so codieren, dass er nach dem Senden von Anfragen abkühlt.

Herausforderungen beim Web-Scraping

Entwickler neigen auch dazu, Honeypot-Fallen für Scraper einzusetzen. Diese Fallen sind normalerweise für das bloße menschliche Auge unsichtbar, können aber von einem Schaber durchkämmt werden. Wenn Sie eine Website scrapen, die eine solche Honeypot-Falle installiert, müssen Sie Ihren Scraper entsprechend codieren.

Captcha ist ein weiteres schwerwiegendes Problem mit Scrapern. Die meisten Websites verwenden heutzutage ein Captcha, um den Bot-Zugriff auf ihre Seiten zu schützen. In einem solchen Fall müssen Sie möglicherweise einen Captcha-Löser verwenden.

Scraping a Website with Python

Wie wir besprochen haben, werden wir BeautifulSoup verwenden, um eine Website zu verschrotten. In diesem Tutorial werden wir die Vergangenheitsdaten of Ethereum von Coingecko und speichern Sie die Tabellendaten als JSON-Datei. Kommen wir zum Bau des Schabers.

Der erste Schritt besteht darin, BeautifulSoup und Requests zu installieren. Für dieses Tutorial verwende ich Pipenv. Pipenv ist ein virtueller Umgebungsmanager für Python. Sie können auch verwenden Venv wenn du willst, aber ich bevorzuge Pipenv. Die Erörterung von Pipenv würde den Rahmen dieses Tutorials sprengen. Aber wenn Sie erfahren möchten, wie Pipenv verwendet werden kann, folgen Sie dieser Leitfaden. Oder, wenn Sie virtuelle Python-Umgebungen verstehen möchten, folgen Sie dieser Leitfaden.

Starten Sie die Pipenv-Shell in Ihrem Projektverzeichnis, indem Sie den Befehl ausführen pipenv shell. Es startet eine Subshell in Ihrer virtuellen Umgebung. Führen Sie nun den folgenden Befehl aus, um BeautifulSoup zu installieren:

pipenv install beautifulsoup4

Führen Sie zum Installieren von Anforderungen den Befehl ähnlich dem obigen aus:

pipenv install requests

Importieren Sie nach Abschluss der Installation die erforderlichen Pakete in die Hauptdatei. Erstellen Sie eine Datei namens main.py und importieren Sie die Pakete wie folgt:

from bs4 import BeautifulSoup
import requests
import json

Der nächste Schritt besteht darin, den Inhalt der historischen Datenseite abzurufen und ihn mit dem in BeautifulSoup verfügbaren HTML-Parser zu parsen.

r = requests.get('https://www.coingecko.com/en/coins/ethereum/historical_data#panel')

soup = BeautifulSoup(r.content, 'html.parser')

Im obigen Code wird auf die Seite mit dem zugegriffen get -Methode, die in der Anforderungsbibliothek verfügbar ist. Der analysierte Inhalt wird dann in einer Variablen namens gespeichert soup.

Der ursprüngliche Scraping-Teil beginnt jetzt. Zunächst müssen Sie die Tabelle im DOM korrekt identifizieren. Wenn Sie öffnen diese Seite und sie mit den im Browser verfügbaren Entwicklertools untersuchen, werden Sie feststellen, dass die Tabelle diese Klassen enthält table table-striped text-sm text-lg-normal.

Coingecko
Coingecko Ethereum Historische Datentabelle

Um diese Tabelle korrekt anzusprechen, können Sie die verwenden find Methode.

table = soup.find('table', attrs={'class': 'table table-striped text-sm text-lg-normal'})

table_data = table.find_all('tr')

table_headings = []

for th in table_data[0].find_all('th'):
    table_headings.append(th.text)

Im obigen Code wird zunächst die Tabelle mithilfe von gefunden soup.find Methode, dann mit der find_all Methode, alle tr Elemente innerhalb der Tabelle werden durchsucht. Diese tr Elemente werden in einer Variablen namens gespeichert table_data. Der Tisch hat ein paar th Elemente für den Titel. Eine neue Variable namens table_headings wird initialisiert, um die Titel in einer Liste zu halten.

Dann wird eine for-Schleife für die erste Zeile der Tabelle ausgeführt. In dieser Zeile sind alle Elemente mit th werden durchsucht, und ihr Textwert wird zu addiert table_headings aufführen. Der Text wird mit extrahiert text Methode. Wenn Sie die ausdrucken table_headings Variable jetzt, können Sie die folgende Ausgabe sehen:

['Date', 'Market Cap', 'Volume', 'Open', 'Close']

Der nächste Schritt besteht darin, die restlichen Elemente zu kratzen, ein Wörterbuch für jede Zeile zu generieren und die Zeilen dann an eine Liste anzuhängen.

for tr in table_data:
    th = tr.find_all('th')
    td = tr.find_all('td')

    data = {}

    for i in range(len(td)):
        data.update({table_headings[0]: th[0].text})
        data.update({table_headings[i+1]: td[i].text.replace('\n', '')})

    if data.__len__() > 0:
        table_details.append(data)

Dies ist der wesentliche Teil des Codes. Für jeden tr der table_data Variable, zuerst die th Elemente werden gesucht. Das th Elemente sind die in der Tabelle angezeigten Daten. Diese th Elemente werden in einer Variablen gespeichert th. Ebenso alle td Elemente werden in gespeichert td variabel.

Ein leeres Wörterbuch data wird initialisiert. Nach der Initialisierung durchlaufen wir den Bereich von td Elemente. Für jede Zeile aktualisieren wir zuerst das erste Feld des Wörterbuchs mit dem ersten Element von th. Der Code table_headings[0]: th[0].text weist ein Schlüssel-Wert-Paar aus Datum und dem ersten zu th Element.

Nach der Initialisierung des ersten Elements werden die anderen Elemente mit zugewiesen data.update({table_headings[i+1]: td[i].text.replace('\\n', '')}). Hier, td Elements Text wird zuerst mit extrahiert text Methode, und dann alle \\n wird durch die ersetzt replace Methode. Der Wert wird dann dem zugewiesen i+1das Element von table_headings Liste, weil die iElement ist bereits vergeben.

Dann, wenn die data die Wörterbuchlänge null überschreitet, hängen wir das Wörterbuch an die an table_details aufführen. Sie können die ausdrucken table_details Liste zu prüfen. Aber wir schreiben die Werte in eine JSON-Datei. Werfen wir einen Blick auf den Code dafür,

with open('table.json', 'w') as f:
    json.dump(table_details, f, indent=2)
    print('Data saved to json file...')

Wir benutzen die json.dump Methode hier, um die Werte in eine JSON-Datei mit dem Namen zu schreiben table.json. Sobald das Schreiben abgeschlossen ist, drucken wir Data saved to json file... in die Konsole.

Führen Sie nun die Datei mit dem folgenden Befehl aus:

python run main.py

Nach einiger Zeit können Sie den Text Data saved to JSON file… in der Konsole sehen. Sie sehen auch eine neue Datei namens table.json im Arbeitsdateiverzeichnis. Die Datei sieht ähnlich aus wie die folgende JSON-Datei:

[
  {
    "Date": "2022-11-27",
    "Market Cap": "$145,222,050,633",
    "Volume": "$5,271,100,860",
    "Open": "$1,205.66",
    "Close": "N/A"
  },
  {
    "Date": "2022-11-26",
    "Market Cap": "$144,810,246,845",
    "Volume": "$5,823,202,533",
    "Open": "$1,198.98",
    "Close": "$1,205.66"
  },
  {
    "Date": "2022-11-25",
    "Market Cap": "$145,091,739,838",
    "Volume": "$6,955,523,718",
    "Open": "$1,204.21",
    "Close": "$1,198.98"
  },
// ...
// ... 
]

Sie haben erfolgreich einen Web Scraper mit Python implementiert. Um den vollständigen Code anzuzeigen, können Sie dies besuchen GitHub Repo.

Fazit

In diesem Artikel wurde erläutert, wie Sie ein einfaches Python-Scrape implementieren können. Wir haben diskutiert, wie BeautifulSoup zum schnellen Scrapen von Daten von der Website verwendet werden könnte. Wir haben auch andere verfügbare Bibliotheken besprochen und warum Python für viele Entwickler die erste Wahl zum Scrapen von Websites ist.

Diese können Sie sich auch anschauen Web Scraping Frameworks.

Danke an unsere Sponsoren
Weitere großartige Lesungen zu Crypto
Macht Ihr Geschäft
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder