Anleitung zum Scrapen von E-Commerce-Webseiten

In dieser Schritt-für-Schritt-Anleitung erfahren Sie, wie Sie E-Commerce-Webseiten mit Playwright und dem Scraping-Browser von Bright Data scrapen können.
13 min read
How to scrape ecommerce websites

Um in der schnelllebigen Welt des E-Commerce immer einen Schritt voraus zu sein, müssen Sie die Konkurrenz im Auge behalten. Eine Möglichkeit, dies zu tun, ist Web Scraping, eine Technik zum Extrahieren von Daten aus Webseiten. Ganz gleich, ob Sie ein erfahrener Entwickler oder ein Neuling sind, der gerade in die Welt der Datenextraktion eintaucht, dieser Artikel soll Ihnen helfen, die Vor- und Nachteile des Web-Scraping von E-Commerce-Webseiten zu verstehen.

Es gibt viele Gründe, warum Sie sich für das Scraping von E-Commerce-Webseiten interessieren könnten, z. B. Wettbewerbsanalyse, Marktforschung, Preisüberwachung, Lead-Generierung oder datengesteuerte Entscheidungsfindung.

In diesem Lernprogramm lernen Sie einige der häufigsten Herausforderungen kennen, denen Sie beim Scrapen von E-Commerce-Webseiten begegnen, und erfahren, wie Sie sie mit Playwright, einer Python-Bibliothek, und dem Scraping Browser von Bright Data scrapen können.

Probleme beim Web Scraping mit lokalen Browsern

Die Möglichkeit, Scraper zu schreiben, mit denen man riesige Datenmengen extrahieren kann, ist zwar großartig, aber die erstmalige Anwendung kann eine Herausforderung sein. So stoßen Entwickler bei der Verwendung lokaler Browser häufig auf verschiedene Probleme, die ihre Effizienz und Effektivität beeinträchtigen können. Zu den häufigsten Problemen gehören die folgenden:

  1. IP-Blockierung: Webseiten verfolgen oft die IP-Adressen, die Requests stellen. Wenn sie eine anormale Anzahl von Requests von einer einzigen IP-Adresse feststellen (typisch für Web Scraping oder Brute-Forcing), können sie diese IP-Adresse blockieren. Bei der Verwendung eines lokalen Browsers kommen alle Requests von einer einzigen IP-Adresse, sodass dies ein erhebliches Problem darstellt.
  2. Ratenbegrenzung: Viele Webseiten setzen eine Ratenbegrenzung ein, die nur eine bestimmte Anzahl von Requests von einer IP-Adresse innerhalb eines bestimmten Zeitraums zulässt. Wenn diese Grenze überschritten wird, können weitere Requests blockiert oder verlangsamt werden, was den Scraping-Prozess behindert.
  3. Fehlende Proxys: Ohne einen Pool von Proxys kommen alle Requests bei einem Scraping-Vorgang von der gleichen IP-Adresse. Dies macht es für Webseiten einfacher, Scraping-Aktivitäten zu erkennen und zu blockieren. Mit einem Pool von Proxys hingegen können die Requests von verschiedenen IP-Adressen kommen, was das Risiko reduziert, entdeckt zu werden.
  4. CAPTCHA-Abfragen: Webseiten können CAPTCHA-Abfragen verwenden, um zu überprüfen, ob es sich bei dem Nutzer um einen Menschen und nicht um einen Bot handelt. Lokalen Browsern fehlen oft die Funktionen, um diese Abfragen automatisch zu lösen, was sie zu einem erheblichen Hindernis bei Scraping-Bemühungen macht.
  5. Dynamische Webseiteninhalte: Viele moderne Webseiten verwenden JavaScript, um Inhalte dynamisch zu laden. Ein lokaler Browser kann Schwierigkeiten haben, diese Webseiten korrekt zu scrapen, da der Inhalt möglicherweise nicht vollständig geladen ist, bevor das Scraping beginnt.

Im Zusammenhang mit dem Scraping mit einem lokalen Browser summieren sich diese Probleme und machen das Web Scraping zu einer Herausforderung. Das Fehlen fortschrittlicher Funktionen wie IP-Rotation und automatische CAPTCHA-Lösung kann Scraping-Prozesse verlangsamen und die Qualität und Quantität der gesammelten Daten verringern. Für Entwickler ist es wichtig, sich dieser häufigen Probleme bewusst zu sein und nach Tools und Techniken zu suchen, um sie effektiv zu umgehen.

Im nächsten Abschnitt wird erörtert, wie der Bright Data Scraping Browser dazu beitragen kann, diese Probleme zu lösen und das Web Scraping zu einer wesentlich reibungsloseren und produktiveren Erfahrung zu machen.

Scrapen mit dem Scraping-Browser von Bright Data

In der Welt des Web Scraping hebt sich Bright Data als innovativer Anbieter ab. Das Herzstück des Bright Data Angebots ist der Web-Scraping-Browser, ein Tool, das speziell für die Herausforderungen bei der Datenextraktion entwickelt wurde.

Mit dem Scraping-Browser lassen sich Probleme mit IP-Sperren leicht lösen, da er Zugriff auf einen riesigen Pool von privaten und mobilen IPs hat. Das bedeutet, dass Sie IPs rotieren und ein organisches Nutzerverhalten emulieren können, was das Risiko einer Sperrung erheblich verringert.

Durch die Nutzung des umfangreichen IP-Pools von Bright Data kann der Scraping-Browser Requests auf mehrere IPs verteilen und so das Problem der Ratenbeschränkung effektiv entschärfen. Darüber hinaus erhalten Sie mit dem Scraping-Browser eine automatische Proxy-Verwaltung. Das bedeutet, dass der Scraping-Browser die Proxy-Rotation übernimmt und damit sicherstellt, dass Ihre Scraping-Aktivitäten ohne manuelle Eingriffe weiterlaufen.

Der Scraping-Browser bietet auch einen fortschrittlichen Browser-Fingerprinting-Schutz, der es Ihnen ermöglicht, einen echten Benutzer zu imitieren. Dadurch wird es für Webseiten schwieriger, Ihre Scraping-Aktivitäten zu erkennen und zu blockieren:

Scraping Browser CP

Tauchen Sie mit diesen Funktionen im Hinterkopf in das Tutorial ein und lernen Sie, wie Sie mit dem Scraping-Browser von Bright Data eine E-Commerce-Webseite scrapen. Dabei wird Python als Programmiersprache verwendet.

Schritt 1: Ein neues Python-Projekt einrichten

Der erste Schritt dieses Tutorials besteht darin, ein neues Python-Projekt einzurichten. Dies ist Ihr Arbeitsbereich für die Scraping-Aufgabe. Sie können einen beliebigen Texteditor oder eine integrierte Entwicklungsumgebung (IDE) Ihrer Wahl verwenden.

Stellen Sie außerdem sicher, dass Python auf Ihrem Rechner installiert ist. Sie können dies überprüfen, indem Sie python --version in Ihrem Terminal eingeben. Wenn Python installiert ist, zeigt dieser Befehl seine Version an. Wenn nicht, müssen Sie es installieren.

Wenn Sie sich vergewissert haben, dass Python installiert ist, ist es an der Zeit, Ihr Projektverzeichnis zu erstellen. Öffnen Sie Ihr Terminal und navigieren Sie zu dem Verzeichnis, in dem Ihr Projekt gespeichert werden soll. Geben Sie dann die folgenden Befehle ein:

mkdir ecommerce-scraping   # This command creates a new directory named ecommerce-scraping.
cd ecommerce-scraping      # This command navigates into the newly created directory.
python -m venv env         # This command creates a new virtual environment in your project directory.
source env/bin/activate    # This command activates the virtual environment.

Es ist sinnvoll, eine virtuelle Umgebung zu erstellen, um Ihr Projekt und seine Abhängigkeiten von anderen Python-Projekten zu isolieren und Konflikte zwischen verschiedenen Bibliotheksversionen zu vermeiden.

Schritt 2: Playwright in das Projekt importieren

Playwright ist eine Python-Bibliothek zum Automatisieren und Testen von Webbrowsern. Sie werden es verwenden, um Ihren Scraping-Browser zu steuern.

Um Playwright zu installieren, verwenden Sie pip, ein Paketinstallationsprogramm für Python:

pip install playwright

Nachdem Sie Playwright installiert haben, müssen Sie den Befehl playwright install ausführen. Dadurch werden die Browser-Binärdateien heruntergeladen, die Playwright für die Automatisierung von Browsern benötigt:

playwright install

Schritt 3: Einrichten eines neuen Bright Data Kontos

Als nächstes benötigen Sie ein Bright Data Konto. Wenn Sie noch keines haben, gehen Sie zur Webseite von Bright Data und melden Sie sich an. Sobald Sie über ein Konto verfügen, können Sie Ihre Scraping-Browser-Instanzen erstellen und verwalten und erhalten Zugriff auf Ihre individuellen Anmeldeinformationen:

Schritt 4: Erstellen einer neuen Scraping-Browser-Instanz

Sobald Sie Zugriff auf ein Konto bei Bright Data haben, melden Sie sich an und gehen Sie zum Abschnitt Scraping-Browser, wo Sie eine neue Scraping-Browser-Instanz erstellen können.

Notieren Sie sich Ihre Host-ID, da Sie diese für die Verbindung mit dem Scraping-Browser benötigen:

Schritt 5: Stellen Sie eine Verbindung mit der Scraping-Browser-Instanz her

Verbinden Sie nun Playwright mit Ihrer Scraping-Browser-Instanz. Bright Data stellt in seiner Dokumentation ein Beispielskript zur Verfügung, das Sie als Ausgangspunkt verwenden können. Denken Sie daran, YOUR_ZONE_USERNAME, YOUR_ZONE_PASSWORD und YOUR_ZONE_HOST durch Ihre tatsächlichen Bright Data Anmeldeinformationen und die ID der von Ihnen erstellten Scraping-Browser-Instanz zu ersetzen:

import asyncio
from playwright.async_api import async_playwright

auth = 'YOUR_ZONE_USERNAME:YOUR_ZONE_PASSWORD'
browser_url = f'wss://{auth}@YOUR_ZONE_HOST'

async def main():
    async with async_playwright() as pw:
        print('connecting');
        browser = await pw.chromium.connect_over_cdp(browser_url)
        print('connected');
        page = await browser.new_page()
        print('goto')
        await page.goto('https://example.com', timeout=120000)
        print('done, evaluating')
        print(await page.evaluate('()=>document.documentElement.outerHTML'))
        await browser.close()

asyncio.run(main())

Speichern Sie diese Datei als main.py in Ihrem Projektverzeichnis. Führen Sie dann das Skript mit folgendem Befehl aus:

python main.py

Dieses Skript initiiert eine neue Instanz des Chromium-Browsers und navigiert zu der von Ihnen angegebenen URL. Anschließend gibt es den Inhalt der Webseite aus und schließt den Browser.

An diesem Punkt haben Sie bestätigt, dass Sie eine Verbindung zur Scraping-Browser-Instanz herstellen können. Da dies Ihr Basisskript ist, sollten Sie den Code schnell durchgehen:

  • import asyncio, async_playwright sind die erforderlichen Importe für das Skript. asyncio ist eine Bibliothek zum Schreiben von gleichzeitigem Single-Thread-Code unter Verwendung von Coroutines, und async_playwright ist die asynchrone API der Playwright-Bibliothek.
  • auth = 'YOUR_ZONE_USERNAME:YOUR_ZONE_PASSWORD‘ richtet die Authentifizierung für den Bright Data Scraping-Browser ein, indem es den Benutzernamen und das Kennwort Ihrer Zone verwendet.
  • browser_url = f'wss ://{auth}@YOUR_ZONE_HOST konstruiert die WebSocket-URL, die eine Verbindung mit dem Bright Data Scraping-Browser herstellt.
  • browser = await pw.chromium.connect_over_cdp(browser_url) stellt eine Verbindung zum Bright Data Scraping-Browser über den Chromium-Browser her. Das Schlüsselwort await unterbricht die Ausführung der Funktion, bis die Verbindung hergestellt ist.
  • await page.goto('https://example.com', timeout=120000) ruft die Seite mit der angegebenen URL auf. Der Parameter timeout gibt an, wie lange gewartet werden soll, bis die Navigation abgeschlossen ist, bevor ein Fehler ausgegeben wird.
  • print(await page.evaluate('()=>document.documentElement.outerHTML')) wertet den JavaScript-Code im Kontext der Seite aus und gibt das Ergebnis aus. In diesem Fall gibt der JavaScript-Code den gesamten HTML-Inhalt der Seite aus.

Schritt 6: Scrapen einer E-Commerce-Webseite

Sobald Sie sich mit der Scraping-Browser-Instanz verbunden haben, können Sie mit dem Scrapen beginnen. In diesem Tutorial werden Sie Books to Scrape scrapen, eine Sandbox-E-Commerce-Webseite, die Scraping erlaubt.

Öffnen Sie Ihre Datei main.py und ersetzen Sie den Inhalt durch den folgenden Code; führen Sie das Skript dann in Ihrem Terminal aus:

import asyncio
from playwright.async_api import async_playwright

auth = 'YOUR_ZONE_USERNAME:YOUR_ZONE_PASSWORD'
browser_url = f'wss://{auth}@YOUR_ZONE_HOST'

async def main():
    async with async_playwright() as pw:
        print('connecting');
        browser = await pw.chromium.connect_over_cdp(browser_url)
        print('connected');
        page = await browser.new_page()
        print('goto')
        await page.goto('https://books.toscrape.com', timeout=120000)
        print('done, evaluating')
        print(await page.evaluate('()=>document.documentElement.outerHTML'))
        await browser.close()

asyncio.run(main())

Sie sehen den Inhalt der Homepage von Books to Scrape ausgedruckt. Zu diesem Zeitpunkt liefert die Ausführung des Skripts nichts Nützliches; Sie erhalten lediglich den gesamten HTML-Inhalt der Ziel-Webseite.

Schritt 7: Strukturierte Informationen extrahieren

Um dieses Tutorial ein wenig nützlicher zu machen, extrahieren Sie einige strukturierte Daten. Dieser Prozess variiert je nach den spezifischen Daten, an denen Sie interessiert sind, aber für dieses Beispiel extrahieren Sie die Namen und Preise der Bücher auf der Homepage.

Beginnen Sie damit, die Startseite von books.toscrape.com zu untersuchen und die HTML-Elemente zu identifizieren, die die Namen und Preise der Bücher enthalten. Die Buchnamen befinden sich in den <h3>-Tags innerhalb von <article class= "product_pod"> und die Preise in den <p class= "price_color">-Tags innerhalb derselben <article>-Tags.

So ändern Sie das Skript, um diese Informationen zu extrahieren:

from playwright import sync_playwright

auth = 'YOUR_ZONE_USERNAME:YOUR_ZONE_PASSWORD'
browser_url = f'wss://{auth}@YOUR_ZONE_HOST'

async def main():
    async with async_playwright() as pw:
        print('connecting')
        browser = await pw.chromium.connect_over_cdp(browser_url)
        print('connected')
        page = await browser.new_page()
        print('goto')
        await page.goto('https://books.toscrape.com', timeout=120000)
        print('done, evaluating')
        
        # Find all the books in the article elements
        books = await page.query_selector_all('article.product_pod')

        # Extract and print each book details in a loop
        async def get_book_details(book):
            # Extract and print book name and price
            book_name_element = await book.query_selector('h3 > a')
            book_name = await book_name_element.get_attribute('title')
            book_price_element = await book.query_selector('div.product_price > p.price_color')
            book_price = await book_price_element.inner_text()
            print(f'{book_name}: {book_price}')

        # Use asyncio.gather() to execute all async calls concurrently
        await asyncio.gather(*(get_book_details(book) for book in books))

        await browser.close()

asyncio.run(main())

Wenn Sie dieses Skript ausführen, sehen Sie eine Liste von Buchnamen und deren Preisen in Ihrem Terminal. Das sieht ungefähr so aus:

Code after running script

Dies ist ein sehr einfaches Beispiel, aber es zeigt, wie Sie mit Playwright und Bright Data strukturierte Daten aus einer Webseite extrahieren können. Sie können dieses Skript anpassen, um verschiedene Arten von Daten von anderen Seiten oder Webseiten zu extrahieren.

Gehen Sie nun einen Schritt weiter und erzeugen Sie eine CSV-Datei mit den ausgelesenen Daten.

Schritt 8: Speichern der gescrapten Daten in einer CSV-Datei

Um die gescrapten Daten in einer CSV-Datei zu speichern, müssen Sie das csv-Modul importieren und eine neue CSV-Datei in der main()-Funktion erstellen. Anschließend können Sie die gescrapten Daten mit der Funktion get_book_details() in die CSV-Datei schreiben.

Öffnen Sie Ihre Datei main.py und fügen Sie den folgenden Code ein:

import asyncio
import csv
from playwright.async_api import async_playwright

auth = 'YOUR_ZONE_USERNAME:YOUR_ZONE_PASSWORD'
browser_url = f'wss://{auth}@YOUR_ZONE_HOST'

async def main():
    async with async_playwright() as pw:
        print('connecting')
        browser = await pw.chromium.connect_over_cdp(browser_url)
        print('connected')
        page = await browser.new_page()
        print('goto')
        await page.goto('https://books.toscrape.com', timeout=120000)
        print('done, evaluating')

        # Find all the books in the article elements
        books = await page.query_selector_all('article.product_pod')

        async def get_book_details(book):
            # Extract book name and price
            book_name_element = await book.query_selector('h3 > a')
            book_name = await book_name_element.get_attribute('title')
            book_price_element = await book.query_selector('div.product_price > p.price_color')
            book_price = await book_price_element.inner_text()

            return book_name, book_price

        # Use asyncio.gather() to execute all async calls concurrently
        book_details = await asyncio.gather(*(get_book_details(book) for book in books))

        # Write book details to a CSV file
        with open('books.csv', 'w', newline='') as f:
            writer = csv.writer(f)
            writer.writerow(['Book Name', 'Price'])  # Write header
            writer.writerows(book_details)  # Write book details

        await browser.close()

asyncio.run(main())

Wenn Sie dieses Skript ausführen, sehen Sie eine neue Datei namens books.csv in Ihrem Projektverzeichnis. Wenn Sie diese Datei öffnen, sehen Sie die gesammelten Daten im CSV-Format wie folgt:

Fazit

In diesem Tutorial haben Sie gelernt, wie Sie mit Playwright und Bright Data Daten von einer E-Commerce-Webseite scrapen können. Dieses Tutorial hat nur an der Oberfläche dessen gekratzt, was Sie mit Playwright und dem Bright Data Scraping-Browser tun können, einer Proxy-Browser-Lösung, die sich darauf konzentriert, die Datenerfassung von Webseiten freizuschalten, die fortschrittliche Antibot-Erkennungstechniken verwenden. Die in diesem Artikel besprochenen Grundlagen können zu fortgeschritteneren Workflows kombiniert werden, um Dinge wie den Preisabgleich, die Marktanalyse und die Lead-Generierung zu automatisieren.

Hinter den Kulissen verwendet Bright Data eine komplette Proxy-Infrastruktur, um Ihre Requests durch einen Pool von Millionen von IPs zu leiten. So können Sie Daten von Webseiten scrapen, ohne blockiert oder gesperrt zu werden. Melden Sie sich für eine kostenlose Testversion an und experimentieren Sie noch heute mit dem Scraping-Browser!

Sie möchten das Scrapen von E-Commerce-Webseiten überspringen und einfach nur Daten erhalten? Kaufen Sie E-Commerce-Datensätze.