Web Scraping Tutorial mit Python: Tipps und Tricks

Python, Scraping, Dec-31-20215 Min. gelesen

Mit Web Scraping können Sie automatisch große Datenmengen aus Websites extrahieren und in einer Datenbank oder einer Datei speichern. Die ausgelesenen Daten können meist in einem Tabellenkalkulations- oder Tabellenformat gespeichert werden. Web Scraping wird auch Webdatenextraktion oder Web Harvesting genannt. Es wird benötigt, weil das manuelle Scraping eine langwierige Aufgabe ist.

Inhaltsübersicht

Mit Web Scraping können Sie automatisch große Datenmengen aus Websites extrahieren und in einer Datenbank oder einer Datei speichern. Die ausgelesenen Daten können meist in einem Tabellenkalkulations- oder Tabellenformat gespeichert werden. Web Scraping wird auch Webdatenextraktion oder Web Harvesting genannt. Es wird benötigt, weil manuelles Scraping eine mühsame Aufgabe ist, die Stunden oder sogar Tage dauern kann. Daher müssen Sie den Prozess automatisieren und die Daten innerhalb eines Bruchteils der Zeit aus Websites extrahieren.

Sie können Web-Scraping-Software verwenden, um automatisch Daten von den verschiedenen Seiten einer Website zu laden, zu crawlen und zu extrahieren, je nach Ihren Bedürfnissen und Anforderungen. Kurz gesagt, Sie können Ihre gewünschten Daten von Websites mit einem Mausklick abrufen. In der modernen Welt müssen Unternehmen die Daten analysieren und intelligente Maßnahmen durchführen. Aber manchmal ist es schwierig, Daten von Websites zu erhalten, wenn die Website-Besitzer Techniken wie IP-Sperren und CAPTCHAs einsetzen. Sie können Proxy-Server oder VPNs verwenden, um dieses Problem zu überwinden, da sie Ihnen helfen, anonym Daten aus dem Internet abzurufen. 

Warum ist Web Scraping notwendig?

Unternehmen auf der ganzen Welt holen sich Daten aus dem Internet, um nützliche Erkenntnisse zu gewinnen, indem sie sie in einem brauchbaren Format speichern. Einige der Vorteile von Web Scraping in verschiedenen Branchen sind unten aufgeführt.

  • Web Scraping sammelt Trainings- und Testdatensätze für Projekte des maschinellen Lernens.
  • Im eCommerce wird Web Scraping eingesetzt, um die Preise der Wettbewerber zu überwachen.
  • Web Scraping wird in der Immobilienbranche eingesetzt, um Details zu Immobilien und Eigentümern/Vermittlern zu erhalten.
  • Im Marketing wird Web Scraping zum Aufbau von Telefon- und E-Mail-Listen für die Kaltakquise verwendet.

Im Folgenden werden die wichtigsten Gründe für das Scraping von Daten aus dem Internet genannt.

Automatisierung - Sie können Daten aus Websites extrahieren, indem Sie robuste Web Scraper verwenden. Auf diese Weise können Sie Zeit für banale Datenerfassungsaufgaben sparen. Sie können Daten in einem größeren Umfang sammeln, als es ein einzelner Mensch mit Web Scraping je könnte. Darüber hinaus können Sie auch ausgefeilte Web-Bots zur Automatisierung von Online-Aktivitäten erstellen, entweder mit einer Programmiersprache wie Python oder Javascript oder mit einem Web-Scraping-Tool.

Reichhaltige und einzigartige Datensätze - Sie können eine große Menge an Bildern, Videos, Texten und numerischen Daten aus dem Internet abrufen. Sie können auch relevante Websites finden und Ihren eigenen Datensatz für die Analyse erstellen, je nachdem, was Ihr Ziel ist. Sie sind beispielsweise daran interessiert, den britischen Sportmarkt im Detail zu verstehen. Sie können Web Scraper einrichten, um Videoinhalte oder Fußballstatistiken für Sie zu sammeln.

Effizientes Datenmanagement - Sie brauchen keine Daten aus dem Internet zu kopieren und einzufügen, da Sie mit Web Scraping Daten von verschiedenen Websites präzise erfassen können. Auf diese Weise können Ihr Unternehmen und Ihre Mitarbeiter mehr Zeit für kreative Arbeit aufwenden, indem sie Daten mit automatischer Software und Programmen effektiv speichern.

Business Intelligence und Insights - Web Scraping aus dem Internet ermöglicht Ihnen Folgendes:

  • Überwachung der Marketingaktivitäten der Wettbewerber
  • Suche nach den Preisen der Wettbewerber
  • Ein größeres Bild von Ihrem Markt erstellen

Außerdem können Unternehmen durch das Herunterladen, Bereinigen und Analysieren von Daten in großem Umfang bessere Entscheidungen treffen.

Geschwindigkeit - Web Scraping extrahiert Daten von Websites mit großer Geschwindigkeit. So können Sie Daten innerhalb von Stunden statt Tagen auslesen. Einige Projekte können jedoch je nach ihrer Komplexität und den Ressourcen und Werkzeugen, die wir für ihre Durchführung verwenden, Zeit in Anspruch nehmen.

Datengenauigkeit - Die manuelle Extraktion von Daten aus Websites ist mit menschlichen Fehlern verbunden, die zu ernsthaften Problemen führen. Daher ist eine genaue Datenextraktion für jede Information entscheidend, was mit Web Scraping erreicht werden kann.

Web Scraping in Python

Angenommen, Sie müssen Daten aus dieser Website extrahieren. Dazu müssen Sie die beiden Python-Module requests und BeautifulSoup installieren. 

Bibliotheken importieren

Sie können diese Module mit dem folgenden Befehl installieren.

!pip install Anfragen
!pip install BeautifulSoup

Sie können diese Module als importieren:

von bs4 importieren BeautifulSoup
importiere Anfragen

Sie können auf die Schaltfläche Inspizieren in der oberen linken Ecke der Website klicken, um die Elemente zu markieren, die Sie extrahieren möchten. In unserem Fall wollen wir die Tabellendaten dieser Website extrahieren, wie unten gezeigt.

Kopfzeile und URL hinzufügen

Sie müssen die Kopfzeile und die URL zu Ihren Anfragen hinzufügen. Die Kopfzeile kann Ihre Anfrage absetzen, so dass sie aussieht, als käme sie von einem legitimen Browser. 

headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'}

url = "https://en.wikipedia.org/wiki/List_of_national_capitals"

Sie können die Funktion requests.get() verwenden, um eine GET-Anfrage an die angegebene URL zu senden.

r = requests.get(url, headers=headers)

BeautifulSoup Objekt

Sie müssen ein BeautifulSoup-Objekt initialisieren und seine Parameter angeben. Dann müssen Sie alle Zeilen der Tabelle extrahieren. Sie können alle Tabellenelemente mit der Methode find_all() abrufen, wie im folgenden Code gezeigt.

soup = BeautifulSoup(r.content, "html.parser")
table = soup.find_all('table')[1]
Zeilen = table.find_all('tr')
row_list = list()

Iteration durch Zeilen

Sie können eine for-Schleife verwenden, um alle Zeilen in der Tabelle zu durchlaufen, wie im folgenden Code gezeigt.

for tr in rows:
   td = tr.find_all('td')
    row = [i.text for i in td]
    row_list.append(row)

Einen Datenrahmen erstellen

Sie können die extrahierten Daten übersichtlich darstellen, wenn Sie einen Pandas-Datenrahmen erstellen und Ihre Daten in eine .csv-Datei exportieren. Um einen Datenrahmen zu erstellen, müssen Sie Pandas importieren, wie unten gezeigt.

import pandas as pd

Nun können Sie Ihr Soup-Objekt in einen Datenrahmen umwandeln, der die folgenden Tabellenzeilen enthält.

  • Stadt
  • Land
  • Anmerkungen

Sie können Ihren Datenrahmen in ein csv-Format konvertieren und wie unten gezeigt ausdrucken.

df_bs = pd.DataFrame(row_list,columns=['Stadt','Land','Anmerkungen'])
df_bs.set_index('Land',inplace=True)
df_bs.to_csv('beautifulsoup.csv')
drucken(df_bs)

Sie erhalten die folgende Ausgabe.

Proxies für Web Scraping mit Python

Ein Proxy fungiert als Vermittler oder Mittelsmann zwischen einem Client und einem Server. Er verbirgt Ihre echte IP-Adresse und umgeht Filter und Zensur. Sie können eine kostenlose Liste von Proxys abrufen, indem Sie einfach eine Funktion in Python verwenden, wie in den folgenden Schritten gezeigt.

Bibliotheken importieren

Sie müssen die folgenden Module in Python importieren.

von bs4 importieren BeautifulSoup
importiere Anfragen
importieren zufällig

Definieren Sie eine Funktion

Sie können eine Funktion get_free_proxies() definieren, in der Sie die URL der Liste der freien Proxys angeben müssen. Dann müssen Sie ein BeautifulSoup-Objekt erstellen und die HTTP-Antwort mit der Funktion requests.get() abrufen. 

def get_free_proxies():
    url = "https://free-proxy-list.net/"
    soup = bs(requests.get(url).content, "html.parser")
    proxies = []

Eine For-Schleife verwenden

Sie können die find_all()-Methode in der for-Schleife verwenden, um alle Tabellenzeilen zu durchlaufen (siehe unten).

for row in soup.find("table", attrs={"id": "proxylisttable"}).find_all("tr")[1:]:
        tds = row.find_all("td")
        try:
            ip = tds[0].text.strip()
            port = tds[1].text.strip()
            host = f"{ip}:{port}"
            proxies.append(host)
        except IndexError:
            continue
    return proxies

Liste der Arbeitsbevollmächtigten

Sie können die Liste einiger funktionierender Proxys nennen, wie die unten erwähnte.

proxies = [
    '167.172.248.53:3128',
   '194.226.34.132:5555',
   '203.202.245.62:80',
    '141.0.70.211:8080',
    '118.69.50.155:80',
    '201.55.164.177:3128',
   '51.15.166.107:3128',
   '91.205.218.64:80',
    '128.199.237.57:8080',
]

Sitzung anfordern

Sie müssen eine Funktion get_session() erstellen, die eine Liste von Proxys akzeptiert. Außerdem wird eine Anfragesitzung erstellt, die nach dem Zufallsprinzip einen der übergebenen Proxys auswählt, wie im folgenden Code gezeigt.

def get_session(proxies):
  session = requests.Session()
  proxy = random.choice(proxies)
  session.proxies = {"http": proxy, "https": proxy}
  return session

Eine Anfrage stellen

Sie können eine for-Schleife verwenden, um eine Anfrage an eine Website zu stellen und als Antwort eine IP-Adresse zu erhalten.

for i in range(5):
    s = get_session(proxies)
    try:
       print("Seite mit IP anfordern:", s.get("http://icanhazip.com", timeout=1.5).text.strip())
    except Exception as e:
        continue

Sie können die folgende Ausgabe erhalten.

Warum sind Proxies wichtig für Web Scraping?

Mit Web Scraping können Unternehmen wertvolle Daten gewinnen, um datengesteuerte Entscheidungen zu treffen und datengestützte Dienste anzubieten. Proxys sind aus den folgenden Gründen wichtig für Web Scraping.

  • Mit Proxys können Sie Anfragen aus einer bestimmten geografischen Region stellen und die spezifischen Inhalte sehen, die die Website für diesen Ort anzeigt. Diese Funktion von Proxys ist von Vorteil, wenn Sie Produktdaten von Online-Händlern auslesen.
  • Proxys ermöglichen es Ihnen, eine größere Anzahl von Anfragen an eine Ziel-Website zu stellen, ohne blockiert oder verboten zu werden.
  • Proxys ermöglichen es Ihnen, Daten von Websites zuverlässiger und effizienter zu crawlen.
  • Mit Proxys können Sie eine unbegrenzte Anzahl gleichzeitiger Sitzungen auf derselben oder verschiedenen Websites durchführen, ohne befürchten zu müssen, gesperrt zu werden.
  • Ein Proxy verbirgt die IP-Adresse Ihres Computers vor der Ziel-Website und bietet so zusätzliche Sicherheit für Ihr Gerät.
  • Unternehmen nutzen Proxys, um die Preise und Produkteigenschaften der Wettbewerber zu überwachen und ihre Dienstleistungen und Produkte zu verbessern.

Fazit zu diesem Python für Web Scraping Tutorial

Bisher haben wir besprochen, dass Web Scraping uns dabei hilft, Daten aus Websites auf automatisierte Weise zu extrahieren. Sie können die Daten in ein brauchbares Format wie eine .csv-Datei umwandeln. Unternehmen nutzen Web Scraping, um die Preise und Produkteigenschaften der Konkurrenz zu überprüfen. Web Scraping ist von großem Nutzen, wenn Sie Proxys verwenden, da diese Ihre Identität anonym halten, indem sie Ihre ursprüngliche IP-Adresse vor der Ziel-Website verbergen. Mit Proxys können Sie mehrere Anfragen an die Website senden, ohne befürchten zu müssen, blockiert oder verboten zu werden.