Web Scraping mit Python: Einführung und Tutorial

Web Scraping mit Python

Web Scraping mit Python: Einführung und Tutorial

Das World Wide Web besteht aus vielen Millionen verknüpfter Dokumente, die auch als Webseiten bezeichnet werden. Der Quelltext der Webseiten ist in der Hypertext Markup Language (HTML) geschrieben. HTML-Quellcodes sind eine Mischung aus lesbaren Informationen für Menschen und maschinenlesbaren Codes , die als Tags oder Labels bezeichnet werden . Der Browser wie Chrome, Firefox, Safari oder Edge verarbeitet den Quelltext, interpretiert die Beschriftungen und präsentiert dem Benutzer die darin enthaltenen Informationen.

Um aus dem Quelltext nur die Informationen zu extrahieren, die den Benutzer interessieren, wird eine spezielle Art von Software verwendet . Hierbei handelt es sich um Programme, sogenannte Web-Scraper , Crawler , Spider oder einfach Bots , die den Quelltext der Seiten auf der Suche nach bestimmten Mustern untersuchen und die darin enthaltenen Informationen extrahieren. Die durch Web Scraping erhaltenen Daten werden anschließend zusammengefasst, kombiniert, ausgewertet oder gespeichert, um später verwendet zu werden.

In diesem Artikel erfahren Sie, warum die Python-Sprache besonders nützlich ist, um Web-Scraper und zu erstellen Wir präsentieren eine Einführung in dieses Thema zusammen mit einem praktischen Tutorial.

Index
  1. Warum genau Python für das Web-Scraping verwenden?
  2. Web Scraping im Allgemeinen
    1. Anwendungsfälle für das Web-Scraping
    2. Ein einfaches Beispiel für Web Scraping
    3. Rechtliche Risiken des Web Scraping
    4. Technische Einschränkungen beim Web Scraping
    5. APIs als Alternative zum Web Scraping
  3. Scraping-Tools für Python
    1. Web Scraping mit Scrapy
    2. Web Scraping mit Selen
    3. Web Scraping mit BeautifulSoup
    4. Vergleich von Web-Scraping-Tools mit Python
  4. Web Scraping mit Python und BeautifulSoup? Lernprogramm
    1. Richten Sie das Web-Scraping-Projekt mit Python auf Ihrem eigenen Computer ein
    2. Extrahieren Sie Zitate und Autoren mit Python und BeautifulSoup
    3. Verwenden Sie Python-Pakete zum Scrapen

Warum genau Python für das Web-Scraping verwenden?

Python, die beliebte Programmiersprache, eignet sich besonders gut zum Erstellen von Web-Scraping-Programmen . Da Webseiten ständig geändert und aktualisiert werden müssen, ändern sich ihre Inhalte im Laufe der Zeit. Ihr Design kann sich beispielsweise ändern oder es können neue Elemente hinzugefügt werden. Die Schaber Web entwickelt unter Berücksichtigung der spezifischen Struktur einer Web – Seite, so dass, wenn die Strukturänderungen, die Schaber muss auch sein geändert . Dieser Vorgang ist mit Python besonders einfach.

Ebenso sind Pythons Stärken die Textverarbeitung und das Öffnen von Webressourcen, zwei der technischen Grundlagen des Web Scraping . Python ist auch ein etablierter Standard für die Datenanalyse und -verarbeitung. Als ob dies nicht genug wäre, bietet Python ein umfangreiches Programmier-Ökosystem , das Bibliotheken, Open Source-Projekte, erklärende Dokumentationen und Referenzen für die Sprache sowie Forenbeiträge, Fehlerberichte und Blog-Artikel umfasst.

Insbesondere gibt es mehrere etablierte Tools, die für das Web-Scraping mit Python entwickelt wurden . Wir präsentieren drei der bekanntesten: Scrapy, Selenium und BeautifulSoup. Wenn Sie mit dem Üben beginnen möchten, können Sie sich unser Web-Scraping- Tutorial mit Python ansehen , in dem wir BeautifulSoup verwenden, um den Scraping- Prozess besser zu verstehen .

Web Scraping im Allgemeinen

Das Grundschema des Web Scraping ist leicht zu erklären. Zunächst analysiert der Scraper- Entwickler den HTML-Quelltext der betreffenden Webseite. Im Allgemeinen finden Sie klare Muster, mit denen Sie die gewünschten Informationen extrahieren können. Der Schaber wird dann so programmiert, dass er diese Muster identifiziert, und erledigt den Rest der Arbeit automatisch :

  1. Webseite über URL öffnen
  2. Strukturierte Daten automatisch aus Mustern extrahieren
  3. Fassen Sie die extrahierten Daten unter anderem zusammen, speichern, bewerten oder kombinieren Sie sie

Anwendungsfälle für das Web-Scraping

Das Web Scraping kann viele verschiedene Anwendungen haben. Neben der Indizierung von Suchmaschinen kann Web Scraping unter anderem auch für folgende Zwecke verwendet werden:

  • Erstellen Sie Kontaktdatenbanken
  • Angebote online prüfen und vergleichen
  • Sammeln Sie Daten aus verschiedenen Online- Quellen
  • Beobachten Sie die Entwicklung der Online- Präsenz und des Online- Rufs
  • Sammeln Sie finanzielle, Wetter- oder andere Daten
  • Beachten Sie Änderungen im Inhalt von Webseiten
  • Sammeln Sie Daten für Forschungszwecke
  • Führen Sie eine Datenexploration oder ein Data Mining durch

Ein einfaches Beispiel für Web Scraping

Stellen Sie sich eine gebrauchte Autoverkaufswebsite vor, auf der beim Öffnen im Browser eine Liste der verfügbaren Autos angezeigt wird. Der Quelltext dieses Beispiels könnte der Eingang eines der Autos sein:

  raw_html = """ <h1>Coche de segunda mano en venta</h1> <ul> <li> <div> Volkswagen Escarabajo </div> <div> <span>Volkswagen</span> <span>Escarabajo</span> <span>1973</span> </div> <div> ? <span>14.998,?</span> </div> </li> </ul> """  

Ein Web- Scraper könnte beispielsweise die Online- Liste der zum Verkauf stehenden Autos untersuchen und je nach der Absicht, mit der er erstellt wurde, nach einem bestimmten Modell suchen. In unserem Beispiel ist es ein Volkswagen Käfer. Im Quelltext werden Marke und Modell des Fahrzeugs durch die CSS-Klassen Automarke bzw. Automodell angegeben. Dank der Klassennamen können die gesuchten Daten einfach extrahiert oder abgekratzt werden . Hier ist das entsprechende Scraping- Beispiel mit BeautifulSoup:

See also  Responsive Navigation: Dynamische Menüs auf Mobilgeräten

  # Analizar sintácticamente el texto fuente HTML guardado en raw_html html = BeautifulSoup(raw_html, 'html.parser') # Extraer el contenido de la etiqueta con la clase 'car-title' car_title = html.find(class_ = 'car-title').text.strip() # Si el coche en cuestión resulta ser un Volkswagen Escarabajo if (car_title == 'Volkswagen Escarabajo'): # Subir del título del coche a la siguiente etiqueta de elemento de lista <li></li> html.find_parent('li') # Determinar el precio del coche car_price = html.find(class_ = 'sales-price').text.strip() # Mostrar el precio del coche print(car_price)  

Rechtliche Risiken des Web Scraping

Web-Scraping- Techniken können sehr nützlich sein, sind jedoch nicht immer frei von rechtlichen Risiken. Da der Website-Betreiber es für menschliche Benutzer konzipiert hat, kann das automatische Öffnen durch einen Web-Scraper einen Verstoß gegen die Nutzungsbedingungen darstellen . Diese Aktionen werden besonders relevant, wenn von mehreren Seiten gleichzeitig oder in schneller Folge auf große Informationsmengen zugegriffen wird, so dass eine Person niemals mit der Seite interagieren kann.

Bei automatischer Ausführung kann das Öffnen, Speichern und Auswerten der auf einer Website veröffentlichten Daten die Rechte an geistigem Eigentum verletzen . Wenn die erhaltenen Daten persönlicher Natur sind, verstößt die Speicherung und Analyse ohne Genehmigung der Betroffenen gegen die geltenden Datenschutzbestimmungen. Aus diesem Grund ist es beispielsweise nicht gestattet, Facebook-Profile zu kratzen , um personenbezogene Daten zu erhalten.

Hinweis

Verstöße gegen den Datenschutz und das geistige Eigentum werden mit erheblichen Bußgeldern geahndet . Stellen Sie daher sicher, dass Sie bei der Verwendung von Web-Scraping- Techniken gesetzeskonform vorgehen . Wenn Sie auf technische Sicherheitsbarrieren stoßen, versuchen Sie auf keinen Fall, diese zu vermeiden.

Technische Einschränkungen beim Web Scraping

Für Webseitenbetreiber ist es oft vorteilhaft, die automatischen Scraping- Möglichkeiten ihrer Online- Inhalte einzuschränken . Einerseits, weil der massive Zugriff von Schabern auf das Web die Leistung der Website beeinträchtigen kann, und andererseits, weil normalerweise interne Abschnitte des Webs vorhanden sind, die nicht in den Suchergebnissen angezeigt werden sollten.

Um den Zugriff auf Schaber zu beschränken , wurde die Verwendung des robots.txt-Standards erweitert. Es ist eine Textdatei, die Weboperatoren im Hauptverzeichnis der Webseite ablegen. Darin befinden sich spezielle Einträge, die festlegen , welche Scraper oder Bots berechtigt sind, auf welche Bereiche des Webs zuzugreifen . Die Einträge in der robots.txt- Datei gelten immer für eine gesamte Domain.

Hier ist ein Beispiel für den Inhalt einer robots.txt- Datei , die das Scraping durch einen beliebigen Bot- Typ auf der gesamten Site verbietet :

 

  # Cualquier bot User-agent: * # Excluir todo el directorio principal Disallow: /  

Die robots.txt- Datei dient nur als Sicherheitsmaßnahme, da sie eine freiwillige Einschränkung durch Bots einlädt , die die Verbote der Datei einhalten sollten. Auf technischer Ebene ist dies jedoch kein Hindernis. Um den Zugriff über Web-Scraper effektiv zu steuern , implementieren Web-Operatoren daher auch aggressivere Techniken. Eine davon besteht beispielsweise darin, die Leistung zu begrenzen. Eine andere Möglichkeit besteht darin, die IP-Adresse des Scraper nach mehreren Zugriffsversuchen zu blockieren, die gegen die Regeln des Webs verstoßen.

APIs als Alternative zum Web Scraping

Trotz seiner Effektivität ist Web Scraping nicht die beste Methode, um Daten von Webseiten zu erhalten. Tatsächlich gibt es oft eine bessere Alternative: Viele Web-Betreiber veröffentlichen ihre Daten in einem strukturierten und maschinenlesbaren Format . Für den Zugriff auf diese Art von Daten werden spezielle Programmierschnittstellen verwendet, die als Application Programming Interfaces (APIs) bezeichnet werden.

Die Verwendung einer API bietet erhebliche Vorteile:

  • Der Websitebesitzer erstellt die API genau, um den Zugriff auf die Daten zu ermöglichen. Dies verringert das Risiko von Verstößen und der Webbetreiber kann den Zugriff auf Daten besser regeln. Eine Möglichkeit, dies zu tun, besteht beispielsweise darin, einen API-Schlüssel anzufordern, um darauf zuzugreifen. Diese Methode ermöglicht es dem Bediener auch, Leistungsbeschränkungen genauer zu regulieren.
  • Die API präsentiert die Daten direkt in einem maschinenlesbaren Format. Damit ist die mühsame Aufgabe, die Daten aus dem Quelltext zu extrahieren, nicht mehr erforderlich. Darüber hinaus wird die Struktur der Daten von ihrer visuellen Darstellung getrennt, sodass sie beibehalten werden, unabhängig davon, ob sich das Design des Webs ändert.

Solange eine API verfügbar ist, die vollständige Daten bietet, ist dies die beste Methode, um auf die Informationen zuzugreifen , ohne zu vergessen, dass durch Web-Scraping im Prinzip alle Texte extrahiert werden können, die eine Person auf einer Webseite lesen kann.

See also  XML-RPC: Remoteprozeduraufrufe im XML-Format

Scraping-Tools für Python

Das Python-Ökosystem enthält mehrere gut etablierte Tools zur Durchführung von Scraping- Projekten :

  • Scrapy
  • Selen
  • Schöne Suppe

Als nächstes stellen wir die Vor- und Nachteile jeder dieser Technologien vor.

Web Scraping mit Scrapy

Scrapy , eines der von uns vorgestellten Tools zum Web-Scraping mit Python, verwendet einen Parser oder HTML- Parser , um Daten aus dem Quelltext (in HTML) des Webs nach diesem Schema zu extrahieren:

URL? HTTP-Anfrage? HTML? Scrapy

Das Schlüsselkonzept für die Entwicklung von Scrapern mit Scrapy sind die sogenannten Web-Spider, einfache Scraping- Programme, die auf Scrapy basieren. Jede Spinne ( Spinne ) ist so programmiert, dass sie ein bestimmtes Netz abkratzt und von Seite zu Seite vom Haken geht . Die verwendete Programmierung ist objektorientiert: Jede Spinne ist eine eigene Python-Klasse.

Zusätzlich zum Python-Paket selbst enthält die Scrapy-Installation ein Befehlszeilentool, die Scrapy-Shell, mit der Sie Spinnen steuern können . Darüber hinaus können bereits erstellte Spinnen in der Scrapy Cloud gespeichert werden. Von dort laufen sie mit festgelegten Zeiten. Auf diese Weise komplexe Web – Sites können auch werden abgeschabt , ohne Ihren eigenen Computer oder Ihre eigene Internet – Verbindung zu verwenden. Ein anderer Weg ist , um ein Server zu erstellen Schaben Web selbst mit der Software Open – Source – Scrapyd.

Scrapy ist eine konsolidierte Plattform zum Anwenden von Web-Scraping- Techniken mit Python. Die Architektur orientiert sich an den Bedürfnissen professioneller Projekte . Scrapy verfügt beispielsweise über eine integrierte Pipeline zur Verarbeitung der extrahierten Daten. Das Öffnen der Seiten in Scrapy erfolgt asynchron, dh mit der Möglichkeit, mehrere Seiten gleichzeitig herunterzuladen. Aus diesem Grund ist Scrapy eine gute Option zum Scraping von Projekten , die große Seitenmengen verarbeiten müssen.

Web Scraping mit Selen

Die freie Software Selenium ist ein Framework zur Durchführung automatisierter Softwaretests für Webanwendungen. Im Prinzip wurde es entwickelt, um Seiten zu testen und mein Web zu platzieren , aber der WebDriver Selenium kann auch mit Python zum Scraping verwendet werden . Obwohl Selenium selbst nicht in Python geschrieben ist, ist es mit dieser Programmiersprache möglich, auf die Funktionen der Software zuzugreifen .

Im Gegensatz zu Scrapy und BeautifulSoup funktioniert Selenium nicht mit dem HTML-Quelltext des betreffenden Webs, sondern lädt die Seite in einem Browser ohne Benutzeroberfläche . Der Browser interpretiert dann den Quellcode der Seite und erstellt daraus ein Dokumentobjektmodell (Dokumentobjektmodell oder DOM). Diese standardisierte Schnittstelle ermöglicht das Testen von Benutzerinteraktionen. Auf diese Weise ist es beispielsweise möglich, Klicks zu simulieren und Formulare automatisch auszufüllen. Änderungen am Web, die sich aus solchen Aktionen ergeben, werden im DOM angezeigt. Die Struktur des Bahnkratzprozesses mit Selen ist wie folgt:

URL? HTTP-Anfrage? HTML? Selen? SONNE

Da das DOM dynamisch generiert wird, können Sie mit Selenium auch Seiten entfernen, deren Inhalt mit JavaScript generiert wurde . Der Zugriff auf dynamische Inhalte ist der wichtigste Vorteil von Selen. In der Praxis kann Selen auch in Kombination mit Scrapy oder BeautifulSoup verwendet werden: Selen würde den Quelltext bereitstellen, während das zweite Tool das Parsen und Auswerten der Daten übernimmt. In diesem Fall hätte das folgende Schema folgende Form:

URL? HTTP-Anfrage? HTML? Selen? SONNE ? HTML? Scrapy / BeautifulSoup

Web Scraping mit BeautifulSoup

Von den drei Tools, die wir für das Web-Scraping mit Python präsentieren, ist BeautifulSoup das älteste . Wie bei Scrapy handelt es sich um einen HTML- Parser oder Parser. Das Web Scraping mit BeautifulSoup hat folgende Struktur:

URL? HTTP-Anfrage? HTML? Schöne Suppe

Im Gegensatz zu Scrapy erfordert die Entwicklung des Scrapers in BeautifulSoup jedoch keine objektorientierte Programmierung, sondern der Scraper wird als einfaches Skript oder Skript geschrieben . Auf diese Weise bietet BeautifulSoup die einfachste Möglichkeit, Informationen aus der Tag-Suppe zu fischen , die ihrem Namen gerecht wird.

Vergleich von Web-Scraping-Tools mit Python

Jedes der drei vorgestellten Tools hat seine Vor- und Nachteile, die wir in der folgenden Tabelle zusammengefasst haben:

  Scrapy Selen Schöne Suppe
Einfaches Lernen und Handhaben ++ + +++
Dynamischen Inhalt lesen ++ +++ +
Realisierung komplexer Anwendungen +++ + ++
Robustheit gegen HTML-Fehler ++ + +++
Optimierung der Scraping-Leistung +++ + +
Ökosystemqualität +++ + ++

Zusammenfassend

Welches Tool sollten Sie für Ihr Projekt auswählen? Fazit: Wählen Sie BeautifulSoup, wenn Sie eine schnelle Entwicklung benötigen oder sich zuerst mit Python und Web Scraping vertraut machen möchten . Mit Scrapy können Sie komplexe Web-Scraping- Anwendungen in Python erstellen, wenn Sie über die erforderlichen Kenntnisse verfügen. Selen ist die beste Option, wenn Sie vorrangig dynamische Inhalte mit Python extrahieren möchten.

See also  Restaurant-Websites: die Schlüssel zu einer gastronomischen Website

Web Scraping mit Python und BeautifulSoup? Lernprogramm

Hier zeigen wir Ihnen, wie Sie mit BeautifulSoup Daten von einer Webseite extrahieren. Der erste Schritt besteht darin, Python und einige Tools zu installieren , die Ihnen helfen. Du wirst brauchen:

  • Python ab Version 3.4
  • Der Pip- Paketmanager für Python
  • Das Venv- Modul

Befolgen Sie zum Installieren von Python die Installationsanweisungen auf der Website.

Nachdem Sie den kostenlosen Homebrew-Paketmanager auf Ihrem System installiert haben, können Sie Python mit dem folgenden Befehl installieren:

 

  brew install python  

Hinweis

Die folgenden Erklärungen und Codebeispiele gelten für Python 3 unter macOS . Der Code sollte theoretisch auch auf anderen Betriebssystemen funktionieren, erfordert jedoch möglicherweise einige Änderungen, insbesondere für Windows.

Richten Sie das Web-Scraping-Projekt mit Python auf Ihrem eigenen Computer ein

Für unser Python-Tutorial möchten wir den Scraper-Webprojektordner auf dem Desktop suchen. Dazu öffnen wir zunächst die Kommandozeilenschnittstelle (Terminal.App auf Mac), kopieren die folgenden Codezeilen hinein und führen sie aus:

  # Cambiar a la carpeta de escritorio cd ~/Desktop/ # Crear directorio de proyecto mkdir ./web Scraper/ && cd ./web Scraper/ # Crear entorno virtual # Se encarga, entre otras cosas, de que posteriormente se use pip3 python3 -m venv ./env # Activar entorno virtual source ./env/bin/activate # Instalar paquetes pip install requests pip install beautifulsoup4  

Extrahieren Sie Zitate und Autoren mit Python und BeautifulSoup

Die Website “Quotes to Scrape” bietet eine ganze Sammlung von Zitaten berühmter Persönlichkeiten, die speziell für Scraping- Tests entwickelt wurden , sodass Sie sich keine Sorgen über Verstöße gegen die Nutzungsbedingungen machen müssen.

Lass uns zur Arbeit gehen. Öffnen Sie die Befehlszeilenschnittstelle (Terminal.App auf Mac) und starten Sie den Python-Interpreter über den Scraper-Webprojektordner . Kopieren Sie dazu die folgenden Codezeilen in die Benutzeroberfläche und führen Sie sie aus:

  # Ir al directorio de proyecto cd ~/Desktop/web Scraper/ # Activar entorno virtual source ./env/bin/activate # Iniciar el intérprete de Python # Puesto que nos encontramos en el entorno virtual, se usa python3 python  

Kopieren Sie nun den folgenden Code und fügen Sie ihn in den Python-Interpreter in der Befehlszeilenschnittstelle ein . Drücken Sie dann die Eingabetaste (ggf. mehrmals), um es auszuführen. Sie können den Code auch als Datei mit dem Namen scrape_quotes.py im Scraper-Webprojektordner speichern . In diesem Fall können Sie das Python- Skript mit dem Befehl python scrape_quotes.py ausführen .

Als letztes Ergebnis sollte sich nach dem Ausführen des Codes in Ihrem Scraper-Webprojektordner eine Datei mit dem Namen zitate.csv befinden . Diese Datei enthält eine Tabelle mit den Zitaten und den Autoren. Sie können sie mit dem Tabellenkalkulationsprogramm Ihrer Wahl öffnen.

  # Importar módulos import requests import csv from bs4 import BeautifulSoup # Dirección de la página web url = "http://quotes.toscrape.com/" # Ejecutar GET-Request response = requests.get(url) # Analizar sintácticamente el archivo HTML de BeautifulSoup del texto fuente html = BeautifulSoup(response.text, 'html.parser') # Extraer todas las citas y autores del archivo HTML quotes_html = html.find_all('span', class_="text") authors_html = html.find_all('small', class_="author") # Crear una lista de las citas quotes = list() for quote in quotes_html: quotes.append(quote.text) # Crear una lista de los autores authors = list() for author in authors_html: authors.append(author.text) # Para hacer el test: combinar y mostrar las entradas de ambas listas for t in zip(quotes, authors): print(t) # Guardar las citas y los autores en un archivo CSV en el directorio actual # Abrir el archivo con Excel / LibreOffice, etc. with open('./zitate.csv', 'w') as csv_file: csv_writer = csv.writer(csv_file, dialect='excel') csv_writer.writerows(zip(quotes, authors))  

Verwenden Sie Python-Pakete zum Scrapen

Keine zwei Web-Scraping- Projekte sind gleich. Manchmal möchten Sie nur überprüfen, ob Änderungen an einer Seite vorgenommen wurden, und manchmal möchten Sie unter anderem komplexe Auswertungen durchführen. Python bietet Ihnen eine große Auswahl an Paketen :

  1. Installieren Sie Pakete in der Befehlszeilenschnittstelle mit pip3

  pip3 install <package></package>  

  1. Integrieren Sie Module in Python- Skripte mit Import

 

  from <package> import <module></module></package>  

Dies sind einige der Pakete, die am häufigsten in Web-Scraping- Projekten verwendet werden :

Paket Zweck
Kommen Sie Verwalten Sie die virtuelle Umgebung des Projekts
Anfrage Öffnen Sie eine Webseite
lxml Verwenden Sie alternative Parser für HTML und XML
csv Lesen und Schreiben von Daten in Tabellen im CSV-Format
Pandas Daten verarbeiten und auswerten
kratzig Verwenden Sie Scrapy
Selen Verwenden Sie Selenium WebDriver

Rat

Verwenden Sie den Python Package Index (PyPI), um alle verfügbaren Pakete anzuzeigen.

Bitte beachten Sie die rechtlichen Hinweise zu diesem Artikel.

administrator

Leave a Reply

Your email address will not be published. Required fields are marked *