Web Scraping für Einsteiger: Grundlagen & Framework mit Python

Python, Scraping, Mar-29-20215 Min. gelesen

Web Scraping ist die Kunst, Daten aus einer Website in automatisierter und gut strukturierter Form zu extrahieren. Es gibt verschiedene Formate für das Scraping von Daten wie Excel, CSV und viele mehr. Einige praktische Anwendungsfälle von Web Scraping sind Marktforschung, Preisüberwachung, Preisinformationen, Marktforschung und Lead-Generierung. Web Scraping ist ein wichtiges Instrument

Web Scraping ist die Kunst, Daten aus einer Website in automatisierter und gut strukturierter Form zu extrahieren. Es gibt verschiedene Formate für das Scraping von Daten wie Excel, CSV und viele mehr. Einige praktische Anwendungsfälle von Web Scraping sind Marktforschung, Preisüberwachung, Preisinformationen, Marktforschung und Lead-Generierung. Web Scraping ist eine instrumentelle Technik, um öffentlich verfügbare Daten optimal zu nutzen und intelligentere Entscheidungen zu treffen. Daher sollte jeder zumindest die Grundlagen des Web Scraping kennen, um davon profitieren zu können.

Dieser Artikel befasst sich mit den Grundlagen des Web Scraping, indem wir mit dem Python-Framework Beautiful Soup herumspielen. Wir werden Google Colab als Programmierumgebung verwenden.

Schritte beim Web Scraping mit Python

Zunächst müssen wir die Webseite identifizieren, die wir auslesen wollen, und eine HTTP-Anfrage an diese URL senden. Als Antwort gibt der Server den HTML-Inhalt der Webseite zurück. Für diese Aufgabe werden wir eine HTTP-Bibliothek eines Drittanbieters verwenden, um Python-Anfragen zu bearbeiten. Sobald wir erfolgreich auf den HTML-Inhalt zugreifen können, besteht die Hauptaufgabe im Parsen der Daten. Wir können die Daten nicht einfach durch die Verarbeitung von Zeichenketten verarbeiten, da die meisten HTML-Daten verschachtelt sind. An dieser Stelle kommt der Parser ins Spiel, der eine verschachtelte Baumstruktur der HTML-Daten erstellt. Eine der fortschrittlichsten HTML-Parser-Bibliotheken ist html5lib. Als Nächstes kommt das Tree Traversal, also das Navigieren und Durchsuchen des Parse-Baums. Zu diesem Zweck werden wir Beautiful Soup (eine Python-Bibliothek eines Drittanbieters) verwenden. Diese Python-Bibliothek wird für das Auslesen von Daten aus HTML- und XML-Dateien verwendet.

Jetzt haben wir gesehen, wie der Prozess des Web Scraping funktioniert. Fangen wir mit der Codierung an,

Schritt 1: Installation von Bibliotheken von Drittanbietern

In den meisten Fällen wird Colab mit bereits installierten Paketen von Drittanbietern ausgeliefert. Wenn Ihre Import-Anweisungen dennoch nicht funktionieren, können Sie dieses Problem durch die Installation einiger Pakete mit den folgenden Befehlen beheben, 

pip install anfragen
pip install html5lib
pip install bs4

Schritt 2: Zugriff auf den HTML-Inhalt der Webseite

Anfragen importieren 
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
print(r.content)

Es wird die Ausgabe des Formulars angezeigt,

Versuchen wir, diesen Teil des Codes zu verstehen,

In der ersten Zeile des Codes importieren wir die requests-Bibliothek, dann geben wir die URL der Webseite an, die wir scrapen wollen, und in der dritten Zeile des Codes senden wir die HTTP-Anfrage an die angegebene URL und speichern die Antwort des Servers in einem Objekt namens r. Schließlich gibt print(r.content) den rohen HTML-Inhalt der Webseite zurück.

Schritt 3: Parsen des HTML-Inhalts

Anfragen importieren 
von bs4 importieren BeautifulSoup 
  
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
  
soup = BeautifulSoup(r.content, 'html5lib') # Wenn diese Zeile einen Fehler verursacht, führen Sie 'pip install html5lib' aus oder installieren Sie html5lib 
print(soup.prettify())

Ausgabe:

Die Ausgabe ist sehr lang; einige der Screenshots sind unten beigefügt.

Eines der größten Vorteile von Beautiful Soup ist, dass es auf HTML-Parsing-Bibliotheken wie html5lib, html.parse, lxml usw. aufbaut, so dass das Objekt von Beautiful Soap und die Parser-Bibliothek gleichzeitig erstellt werden können. 

Im obigen Code haben wir das Objekt Beautiful Soup erstellt, indem wir zwei Argumente übergeben haben:

r.Inhalt: Roher HTML-Inhalt.

html5lib: Gibt den HTML-Parser an, der verwendet werden soll.

Schließlich wird soup.prettify() gedruckt, wodurch der Parse-Baum aus dem rohen HTML-Inhalt visuell dargestellt wird.

Schritt 4: Suchen und Navigieren im Parse-Baum

Nun ist es an der Zeit, einige der nützlichen Daten aus dem HTML-Inhalt zu extrahieren. Die Soup-Objekte enthalten die Daten in Form der verschachtelten Struktur, die weiter programmatisch extrahiert werden können. In unserem Fall scrapen wir eine Webseite, die aus einigen Zitaten besteht. Wir werden also ein Programm erstellen, das diese Zitate auflöst. Der Code ist unten angegeben,

#Python program to scrape website  
#and save quotes from website 
import requests 
from bs4 import BeautifulSoup 
import csv 
   
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL) 
   
soup = BeautifulSoup(r.content, 'html5lib') 
   
quotes=[]  # a list to store quotes 
   
table = soup.find('div', attrs = {'id':'all_quotes'})  
   
for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)

Bevor wir weitermachen, sollten wir den HTML-Inhalt der Webseite durchgehen, den wir mit der Methode soup.prettify() ausgedruckt haben, und versuchen, ein Muster zu finden, um zu den Anführungszeichen zu navigieren.

Ich werde nun erklären, wie wir dies im obigen Code erreichen, 

Wenn wir durch die Anführungszeichen navigieren, stellen wir fest, dass sich alle Anführungszeichen innerhalb eines div-Containers befinden, dessen ID "all_quotes" lautet. Wir suchen also dieses div-Element (im Code als Tabelle bezeichnet) mit der Methode find():

table = soup.find('div', attrs = {'id':'all_quotes'})

Das erste Argument in dieser Funktion ist das HTML-Tag, das gesucht werden soll. Das zweite Argument ist ein Element vom Typ Wörterbuch, um die zusätzlichen Attribute zu spezifizieren, die mit diesem Tag verbunden sind. find() gibt das erste passende Element zurück. Man kann table.prettify() ausprobieren, um ein besseres Gefühl dafür zu bekommen, was dieses Stück Code bewirkt.

Wenn wir uns auf das Tabellenelement konzentrieren, enthält der div-Container jedes Zitat, dessen Klasse quote ist. Wir durchlaufen also jeden div-Container, dessen Klasse quote ist.

Hier ist die findAll()-Methode sehr nützlich, die der find()-Methode in Bezug auf die Argumente ähnelt, aber der Hauptunterschied ist, dass sie eine Liste aller übereinstimmenden Elemente zurückgibt. 

Wir iterieren durch jedes Zitat mit einer Variablen namens Zeile.

Lassen Sie uns zum besseren Verständnis ein Beispiel für den Inhalt einer HTML-Zeile analysieren:

Betrachten Sie nun das folgende Stück Code:

for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}): 
    quote = {} 
    quote['theme'] = row.h5.text 
    quote['url'] = row.a['href'] 
    quote['img'] = row.img['src'] 
    quote['lines'] = row.img['alt'].split(" #")[0] 
    quote['author'] = row.img['alt'].split(" #")[1] 
    quotes.append(quote) 
   
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f: 
    w = csv.DictWriter(f,['theme','url','img','lines','author']) 
    w.writeheader() 
    for quote in quotes:
        w.writerow(quote)

Hier erstellen wir ein Wörterbuch, um alle Informationen über ein Zitat zu speichern. Für den Zugriff auf die verschachtelte Struktur wird die Punktschreibweise verwendet. Um auf den Text innerhalb des HTML-Elements zuzugreifen, verwenden wir .text:

Darüber hinaus können wir auch die Attribute des Tags hinzufügen, entfernen, ändern und darauf zugreifen. Wir haben dies getan, indem wir das Tag wie ein Wörterbuch behandelt haben:

quote['url'] = row.a['href']

Dann haben wir alle Anführungszeichen an die Liste "Anführungszeichen" angehängt. 

Zum Schluss erstellen wir eine CSV-Datei, die wir zum Speichern unserer Daten verwenden werden.

Dateiname = 'inspirational_quotes.csv'

Wir haben unsere Datei inspirational_qoutes.csv genannt und alle Zitate in ihr gespeichert, um sie auch in Zukunft verwenden zu können. So sieht unsere inspirational_quotes.csv-Datei aus,

In der obigen Ausgabe haben wir nur drei Zeilen angezeigt, in Wirklichkeit sind es aber 33 Zeilen. Das bedeutet, dass wir durch einen einfachen Versuch eine beträchtliche Menge an Daten aus der Webseite extrahiert haben. 

Hinweis: In einigen Fällen wird Web-Scraping als illegal angesehen, was dazu führen kann, dass Ihre IP-Adresse von der Website dauerhaft blockiert wird. Seien Sie also vorsichtig und scrapen Sie nur Websites und Webseiten, die dies erlauben. 

Warum Web Scraping verwenden?

Einige der realen Szenarien, in denen Web Scraping von großem Nutzen sein kann, sind,

Lead-Generierung

Eine der wichtigsten Vertriebsaktivitäten für die meisten Unternehmen ist die Generierung von Leads. Einem Bericht von Hubspot zufolge ist die Generierung von Traffic und Leads für 61 % der Inbound-Vermarkter die oberste Priorität. Web Scraping kann dabei eine Rolle spielen, indem es Vermarktern ermöglicht, auf die strukturierten Lead-Listen im gesamten Internet zuzugreifen.

Marktforschung 

Die richtige Marktforschung ist das wichtigste Element eines jeden Unternehmens und erfordert daher äußerst präzise Informationen. Die Marktanalyse wird durch umfangreiches, qualitativ hochwertiges und äußerst aufschlussreiches Web-Scraping vorangetrieben, das in verschiedenen Größen und Formen vorliegen kann. Diese Daten können ein sehr nützliches Instrument für die Durchführung von Business Intelligence sein. Das Hauptaugenmerk der Marktforschung liegt auf den folgenden Geschäftsaspekten:

  • Sie kann zur Analyse von Markttrends verwendet werden.
  • Sie kann uns helfen, die Marktpreise vorherzusagen.
  • Es ermöglicht die Optimierung der Einstiegspunkte entsprechend den Kundenbedürfnissen.
  • Sie kann bei der Überwachung der Wettbewerber sehr hilfreich sein.

Inserate erstellen

Web-Scraping kann eine sehr praktische und fruchtbare Technik für die Erstellung von Listen je nach Art des Unternehmens sein, z. B. für Immobilien und eCommerce-Geschäfte. Ein Web-Scraping-Tool kann dem Unternehmen dabei helfen, Tausende von Angeboten von Konkurrenzprodukten in seinem Shop zu durchsuchen und alle notwendigen Informationen wie Preise, Produktdetails, Varianten und Bewertungen zu sammeln. Dies kann in nur wenigen Stunden geschehen, was wiederum dabei helfen kann, eigene Angebote zu erstellen und sich dabei stärker auf die Kundenwünsche zu konzentrieren.

Informationen vergleichen

Web Scraping hilft verschiedenen Unternehmen, Informationen zu sammeln und zu vergleichen und diese Daten auf sinnvolle Weise bereitzustellen. Nehmen wir z. B. Preisvergleichswebsites, die Bewertungen, Merkmale und alle wichtigen Details aus verschiedenen anderen Websites extrahieren. Diese Details können für einen einfachen Zugriff zusammengestellt und angepasst werden. So kann eine Liste von verschiedenen Einzelhändlern erstellt werden, wenn der Käufer nach einem bestimmten Produkt sucht. Das Web Scraping erleichtert dem Verbraucher die Entscheidungsfindung, indem es verschiedene Produktanalysen entsprechend der Verbrauchernachfrage anzeigt.

Aggregierte Informationen

Web Scraping kann dabei helfen, die Informationen zu bündeln und sie dem Benutzer in einer organisierten Form anzuzeigen. Betrachten wir den Fall der Nachrichtenaggregatoren. Web Scraping wird auf die folgenden Arten eingesetzt,

Mit Web Scraping kann man die genauesten und relevantesten Artikel sammeln, Links zu nützlichen Videos und Artikeln sammeln, Zeitleisten entsprechend den Nachrichten erstellen und Trends entsprechend den Lesern der Nachrichten erfassen.

In diesem Artikel haben wir also eingehend analysiert, wie Web-Scraping unter Berücksichtigung eines praktischen Anwendungsfalls funktioniert. Wir haben auch eine sehr einfache Übung zur Erstellung eines einfachen Web-Scrapers in Python durchgeführt. Jetzt können Sie beliebige andere Websites Ihrer Wahl scrapen. Darüber hinaus haben wir uns auch einige reale Szenarien angesehen, in denen Web Scraping eine wichtige Rolle spielen kann. Wir hoffen, dass Ihnen der Artikel gefallen hat und alles klar, interessant und verständlich war.  

Wenn Sie nach erstaunlichen Proxy-Diensten für Ihre Web-Scraping-Projekte suchen, sollten Sie nicht vergessen, einen Blick auf ProxyScrape Wohn- und Premium-Proxys.