Scraping von Amazon: Leitfaden 2024

Lernen Sie, wie Sie mit Python Amazon scrapen können und den Scraping-Browser von Bright Data verwenden.
15 min read
How To Scrape Amazon

Sie fragen sich jetzt vielleicht, warum sich auf Amazon konzentrieren? Als eine der größten E-Commerce-Plattformen der Welt bildet Amazon eine reichhaltige Quelle wertvoller Daten. Diese Daten liefern eine Fülle von Details über Produkte, Preise, Kundenfeedback und neue Trends. Verkäufer könnten diese Daten zum Beispiel nutzen, um ihre Konkurrenten zu beobachten, Marktforscher können Markttrends analysieren, und Verbraucher können sachkundige Kaufentscheidungen treffen. Den Möglichkeiten sind keine Grenzen gesetzt.

In dieser Anleitung lernen Sie, wie Sie Amazon mit Tools wie Beautiful Soup und Playwright Amazon scrapen können. Während Sie sich Schritt für Schritt durch diesen Prozess arbeiten, werden Sie auch über die Lösung von Bright Data aufgeklärt, die diesen Prozess erheblich beschleunigen kann.

Manuelles Scrapen von Amazon mit Python

Bevor Sie mit der Datenextraktion von Amazons Website loslegen, müssen Sie zunächst alle erforderlichen Bibliotheken auf Ihrem Rechner installiert haben. Ein Grundverständnis von Web-Scraping und HTML ist ebenso von Vorteil.

Wichtiger Hinweis: Diese Anleitung dient ausschließlich zu Lehrzwecken und als Demonstration der technischen Möglichkeiten. Es ist jedoch wichtig zu beachten, dass das Scraping der Daten von Amazon Bedenken hinsichtlich der Nutzungsbedingungen und der Legalität aufwirft. Unbefugtes Scraping kann schwerwiegende Folgen nach sich ziehen, einschließlich rechtlicher Maßnahmen und Kontosperrung. Lassen Sie immer Vorsicht walten und halten Sie sich an ethische Praktiken.

Voraussetzungen

Um mit der Anleitung fortfahren zu können, müssen Sie Python auf Ihrem Rechner installiert haben. Falls Sie mit Python noch nicht vertraut sind, lesen Sie diese Anleitung zu Scraping mit Python für genauere Anweisungen. Sollten Sie bereits Python verwenden, vergewissern Sie sich, dass es sich um die Version 3.7.9 oder höher handelt.

Sobald Sie Python eingerichtet haben, öffnen Sie Ihr Terminal bzw. Ihre Shell und erstellen Sie mit folgenden Befehlen ein neues Projektverzeichnis:

mkdir scraping-amazon-python && cd scraping-amazon-python

Nach der Erstellung des Projektverzeichnisses müssen Sie eine Reihe zusätzlicher Bibliotheken installieren, die für effektives Web-Scraping unerlässlich sind. Insbesondere werden Sie Requestsverwenden, eine Bibliothek, die für die Bearbeitung von HTTP-Anfragen in Python konzipiert wurde; pandas, eine zuverlässige und auf die Datenmanipulation und -analyse ausgerichtete Bibliothek; Beautiful Soup (BS4) für das Parsen von HTML-Inhalten sowie Playwright zur Automatisierung von Vorgängen beim Surfen im Internet.

Zur Installation dieser Bibliotheken führen Sie in Ihrem Terminal oder Ihrer Shell die folgenden Befehle aus:

pip3 install beautifulsoup4
pip3 install requests
pip3 install pandas
pip3 install playwright
playwright install

Vergewissern Sie sich, dass der Installationsvorgang reibungslos verläuft, bevor Sie mit den weiteren Schritten fortfahren.

Beachten Sie Folgendes: Der letzte Befehl (d. h. playwright install) ist ausschlaggebend, da hierdurch gewährleistet wird, dass die erforderlichen Browser-Binärdateien ordnungsgemäß eingerichtet werden.

Bedienung der Layout- und Datenkomponenten von Amazon

Sobald Sie die erforderlichen Bibliotheken installiert haben, müssen Sie sich mit der Struktur der Website vertraut machen. Die Hauptseite von Amazon bietet eine benutzerfreundliche Suchleiste, mit der Sie eine Vielzahl von Produkten erkunden können, von Elektronik bis hin zu Büchern.

Nach Eingabe Ihrer Suchkriterien werden die Ergebnisse in einer Listenansicht angezeigt, in der die Produkte samt Titel, Preisen, Bewertungen und anderen relevanten Angaben aufgeführt sind. Übrigens lassen sich die Suchergebnisse mit verschiedenen Filtern sortieren, z. B. nach Preisklasse, Produktkategorie und Kundenbewertungen:

Amazon

Sollten Sie eine ausführlichere Liste von Suchergebnissen wünschen, können Sie die Schaltflächen zum Paginieren nutzen, die sich am unteren Rand der Seite befinden. Jede Seite enthält in der Regel eine Vielzahl von Angeboten, sodass Sie zusätzliche Produkte durchsehen können. Über die am Seitenanfang befindlichen Filter können Sie Ihre Suche nach Ihren Bedürfnissen verfeinern.

Führen Sie folgende Schritte aus, um einen Einblick in die HTML-Struktur von Amazon zu erhalten:

  1. Besuchen Sie die Amazon-Website.
  2. Geben Sie Ihr gewünschtes Produkt in die Suchleiste ein oder wählen Sie eine Kategorie aus der Vorschlagsliste.
  3. Öffnen Sie die Entwicklertools des Browsers, indem Sie mit der rechten Maustaste auf ein Produkt klicken und „ Element inspizieren“ wählen.
  4. Untersuchen Sie das HTML-Layout, um die Tags und Attribute der zu extrahierenden Daten zu identifizieren.

Scraping von Amazon-Produkten

Nachdem Sie nun mit der Produktstruktur von Amazon vertraut sind, werden Sie in diesem Abschnitt Angaben wie den Namen des Produkts, die Bewertung, die Anzahl der Bewertungen sowie den Preis erfassen.

Erstellen Sie in Ihrem Projektverzeichnis ein neues Python-Skript namens amazon_scraper.py und fügen Sie den folgenden Code ein:

import asyncio
from playwright.async_api import async_playwright
import pandas as pd
async def scrape_amazon():
    async with async_playwright() as pw:
        # Launch new browser
        browser = await pw.chromium.launch(headless=False)
        page = await browser.new_page()
        # Go to Amazon URL
        await page.goto('https://www.amazon.com/s?i=fashion&bbn=115958409011')
        # Extract information
        results = []
        listings = await page.query_selector_all('div.a-section.a-spacing-small')
        for listing in listings:
            result = {}
            # Product name
            name_element = await listing.query_selector('h2.a-size-mini > a > span')
            result['product_name'] = await name_element.inner_text() if name_element else 'N/A'
            
            # Rating
            rating_element = await listing.query_selector('span[aria-label*="out of 5 stars"] > span.a-size-base')
            result['rating'] = (await rating_element.inner_text())[0:3]await rating_element.inner_text() if rating_element else 'N/A'
            
            # Number of reviews
            reviews_element = await listing.query_selector('span[aria-label*="stars"] + span > a > span')
            result['number_of_reviews'] = await reviews_element.inner_text() if reviews_element else 'N/A'
            
            # Price
            price_element = await listing.query_selector('span.a-price > span.a-offscreen')
            result['price'] = await price_element.inner_text() if price_element else 'N/A'
            if(result['product_name']=='N/A' and result['rating']=='N/A' and result['number_of_reviews']=='N/A' and result['price']=='N/A'):
                pass
            else:
                results.append(result)
        # Close browser
        await browser.close()
        
        return results
# Run the scraper and save results to a CSV file
results = asyncio.run(scrape_amazon())
df = pd.DataFrame(results)
df.to_csv('amazon_products_listings.csv', index=False)

In diesem Programmcode nutzen Sie die asynchronen Funktionen von Python mit der Playwright-Bibliothek, um Produktlisten von einer konkreten Amazon-Modeseite abzurufen. Sobald Sie eine neue Browser-Instanz starten und zur Ziel-URL von Amazon wechseln, extrahieren Sie Produktdetails wie den Produktnamen, die Bewertung, die Anzahl der Bewertungen sowie den Preis. Nachdem Sie die einzelnen Einträge der Seite durchgesehen haben, filtern Sie diejenigen Einträge heraus, die keine Daten enthalten (d. h. Sie markieren sie als „N/A“). Die Ergebnisse Ihres Scrapings werden danach in einem Pandas DataFrame gespeichert und anschließend in eine CSV-Datei namens amazon_products_listings.csv exportiert.

Zur Ausführung des Skripts starten Sie python3 amazon_scraper.py in Ihrem Terminal oder Ihrer Shell. Ihre Ausgabe sollte wie folgt aussehen:

product_name,rating,number_of_reviews,price
Crocs Women's Kadee Ii Sandals,4.2,17.5K+,$29.99
Teva Women's W Flatform Universal Sandal,4.7,7K+,$58.80
"OOFOS OOriginal Sport Sandal - Lightweight Recovery Footwear - Reduces Stress on Feet, Joints & Back - Machine Washable - Hand-Painted Graphics",4.5,9.4K+,N/A
"Crocs Women's Brooklyn Low Wedges, Platform Sandals",4.6,11.7K+,N/A
Teva Women's Original Universal Sandal,4.7,18.7K+,$35.37
Reef Women's Water Vista Sandal,4.5,1.9K+,$59.95
Crocs Women's Brooklyn Platform Slides Sandal,4.2,376,N/A
…output omitted…

Beachten Sie bitte: Wenn das Skript beim ersten Mal nicht funktioniert, führen Sie es erneut aus. Amazon verfügt über ausgefeilte Anti-Scraping-Maßnahmen, die Ihre Versuche, Daten zu scrapen, eventuell verhindern oder blockieren.

Fortschrittliche Scraping-Techniken für Amazon

Zu Beginn Ihrer Scraping-Reise mit Amazon werden Sie bald feststellen, dass dieser für seine komplexen und aufwändigen Webseiten bekannte E-Commerce-Riese Herausforderungen birgt, die mehr als nur simple Scraping-Methoden erfordern. Werfen Sie einen Blick auf einige anspruchsvolle Techniken, die zu einem reibungslosen und effizienten Scraping-Erlebnis beitragen können:

Verwaltung der Paginierung

Amazon listet mehrere Produkte auf, die sich meist über mehrere Seiten erstrecken. Um sämtliche Daten zu erfassen, sollte Ihr Skript die Navigation durch diese Seiten reibungslos ermöglichen. Eine gängige Variante besteht in der Verwendung der Schaltfläche „ Weiter “ am unteren Seitenrand von Produktangeboten. Durch die Identifizierung des eindeutigen Selektors können Sie Ihr Skript so programmieren, dass es diese Schaltfläche anklickt und zur nächsten Seite weiterleitet. Achten Sie jedoch darauf, dass Ihr Scraper auf das Laden aller Elemente wartet, bevor er den Vorgang fortsetzt.

Umgehung von Werbeanzeigen

In Produktangeboten von Amazon werden oft Anzeigen eingeblendet. Diese Anzeigen weisen möglicherweise im Vergleich zu normalen Produkten eine etwas abweichende Struktur auf, was zu Störungen im Scraping-Prozess führen kann. Als Lösung für diese Problematik müssen Sie Elemente oder Tags aufspüren, die auf eine Anzeige hindeuten. Suchen Sie zum Beispiel nach Tags mit Bezeichnungen wie „ Gesponsert “ oder „ Anzeige“. Einmal erkannt, können Sie Ihr Skript anweisen, diese Einträge zu überspringen, um ausschließlich echte Produktdaten zu erfassen.

Blockierung abschwächen

Angesichts der strengen Überwachung seiner Inhalte könnte Amazon Aktivitäten, die es als roboterhaft oder verdächtig einstuft, blockieren oder zeitweilig aussetzen. Daher ist es äußerst wichtig, dass Ihr Scraper einen so menschenähnlichen Eindruck wie möglich erzeugt.

Um eine Blockierung zu vermeiden, müssen Sie mit Funktionen wie asyncio.sleep(random.uniform(1, 5)) Verzögerungen oder unregelmäßige Intervalle zwischen den Anfragen einführen. Dadurch wirkt Ihr Scraping-Muster nicht ganz so automatisiert. Berücksichtigen Sie zudem die Rotation von Benutzeragenten und IP-Adressen, um das Risiko einer Erkennung zu verringern. Der Einsatz von CAPTCHA-Lösungsdiensten kann bei Problemen mit CAPTCHAs ebenfalls von Vorteil sein.

Dynamische Verwaltung von Inhalten

Einige Inhalte von Amazon, wie Bewertungen oder Bereiche mit Fragen und Antworten, werden auf dynamische Weise geladen, weshalb ein gewöhnlicher Scraper diese Daten übersehen könnte. Vergewissern Sie sich daher, dass Ihr Scraper JavaScript ausführen und auf das Laden dynamischer Inhalte warten kann. Mit Tools wie Playwright oder Selenium können Sie explizite Wartezeiten festlegen, um zu gewährleisten, dass bestimmte Elemente geladen werden, bevor der Scraper fortfährt.

Festlegen eines Scraping-Limits

Leider kann das Senden vieler gleichzeitiger Anfragen zu IP-Blacklisten führen. Dies lässt sich nur durch die Begrenzung der Anzahl der gesendeten Anfragen verhindern.

Konzipieren Sie Ihr Skript auf eine Weise, dass es die Server von Amazon nicht überlastet. Wie bereits erwähnt, ist eine angemessene Verzögerung zwischen den Anfragen wesentlich.

Wenn Sie diese fortschrittlichen Techniken umsetzen, steigern Sie nicht nur die Effizienz Ihrer Scraping-Bemühungen auf Amazon, sondern sorgen auch für Langlebigkeit und verringern die Wahrscheinlichkeit, dass Ihr Scraper entdeckt oder blockiert wird.

Erwägen Sie die Verwendung von Bright Data zum Scrapen von Amazon

Manuelles Web-Scraping kann bei kleineren Aufgaben zwar zu guten Ergebnissen führen, ist jedoch bei größeren Aufgaben mitunter langwierig und weniger effizient. Wenn Sie eine effizientere Methode zur Erfassung großer Datenmengen von Amazon wünschen, sollten Sie Bright Data verwenden.

Der Bright Data Scraping-Browser erleichtert die Interaktion zwischen dynamischen Websites wie Amazon, indem er gekonnt durch JavaScript, AJAX-Anfragen und andere komplexe Vorgänge navigiert. Und sollten Sie unbedingt strukturierte Amazon-Daten benötigen, sei es in Form von Produktlisten, Bewertungen oder Verkäuferprofilen, können Sie sofort auf den Amazon-Datenbestand zugreifen, mit dem Sie kuratierte Daten direkt von der Plattform herunterladen und abrufen können.

Erstellung eines Bright Data-Kontos

Um mit Bright Data loszulegen, müssen Sie zunächst Ihr Konto erstellen und einrichten. Gehen Sie dazu folgendermaßen vor:

Öffnen Sie Ihren Browser und rufen Sie die Bright Data-Website auf. Klicken Sie auf „ Kostenlose Testversion starten “ und folgen Sie den Anweisungen.

Sobald Sie sich in Ihrem Dashboard befinden, suchen Sie das Kreditkartensymbol in der linken Seitenleiste, um die Seite „ Abrechnung “ aufzurufen. Geben Sie hier eine gültige Zahlungsmethode ein, um Ihr Konto zu aktivieren:

Abrechnungsseite. .

Als Nächstes wechseln Sie in den Bereich Proxys- und Scraping-Infrastruktur , indem Sie das entsprechende Symbol auswählen. Wählen Sie Wählen Sie Scraping-Browser > Erste Schritte:

Scraping-Browser

Benennen Sie Ihre Lösung entsprechend und klicken Sie zur Bestätigung auf die Schaltfläche „ Hinzufügen “:

Nehmen Sie sich unter Zugangsparameter einen Moment Zeit, um Ihren Benutzernamen, Host (Standard) und Ihr Passwort zu vermerken. Sie benötigen diese Angaben später erneut:

Nachdem Sie diese Schritte ausgeführt haben, können Sie mit der Extraktion der Daten fortfahren.

Extraktion von Amazon-Produktdaten mittels Scraping-Browser

Um mit dem Scrapen von Amazon-Produktdaten über Bright Data zu beginnen, erstellen Sie eine neue Datei mit der Bezeichnung amazon_scraper_bdata.py und fügen Sie folgenden Code ein:

import asyncio
from playwright.async_api import async_playwright
import pandas as pd
username='YOUR_BRIGHTDATA_USERNAME'
password='YOUR_BRIGHTDATA_PASSWORD'
auth=f'{username}:{password}'
host = 'YOUR_BRIGHTDATA_DEFAULT_HOST'
browser_url = f'wss://{auth}@{host}'
async def scrape_amazon_bdata():
    async with async_playwright() as pw:
        print('connecting')
        # Launch new browser
        browser = await pw.chromium.connect_over_cdp(browser_url)
        print('connected')
        page = await browser.new_page()
        print('navigating')
        # Go to Amazon URL
        await page.goto('https://www.amazon.com/s?i=fashion&bbn=115958409011', timeout=600000)
        print('data extraction in progress')
        # Extract information
        results = []
        listings = await page.query_selector_all('div.a-section.a-spacing-small')
        for listing in listings:
            result = {}
            # Product name
            name_element = await listing.query_selector('h2.a-size-mini > a > span')
            result['product_name'] = await name_element.inner_text() if name_element else 'N/A'
            
            # Rating
            rating_element = await listing.query_selector('span[aria-label*="out of 5 stars"] > span.a-size-base')
            result['rating'] = (await rating_element.inner_text())[0:3]await rating_element.inner_text() if rating_element else 'N/A'
            
            # Number of reviews
            reviews_element = await listing.query_selector('span[aria-label*="stars"] + span > a > span')
            result['number_of_reviews'] = await reviews_element.inner_text() if reviews_element else 'N/A'
            
            # Price
            price_element = await listing.query_selector('span.a-price > span.a-offscreen')
            result['price'] = await price_element.inner_text() if price_element else 'N/A'
            if(result['product_name']=='N/A' and result['rating']=='N/A' and result['number_of_reviews']=='N/A' and result['price']=='N/A'):
                pass
            else:
                results.append(result)
        # Close browser
        await browser.close()
        
        return results
# Run the scraper and save results to a CSV file
results = asyncio.run(scrape_amazon_bdata())
df = pd.DataFrame(results)
df.to_csv('amazon_products_bdata_listings.csv', index=False)

In diesem Programmcode verwenden Sie die Playwright -Bibliothek zusammen mit asyncio , um asynchron Produktdaten von einer Amazon-Webseite abzurufen. Dazu müssen Sie die Authentifizierungsdaten für Bright Data, einen Proxy-Dienst, einrichten und anschließend eine Verbindung zu einem Browser herstellen, der diesen Dienst nutzt.

Einmal verbunden, navigiert das Skript zu der angegebenen Amazon-URL, extrahiert Produktinformationen wie den Namen, die Bewertung, die Anzahl der Bewertungen sowie den Preis und fasst diese Details dann in einer Liste zusammen. Enthält ein bestimmtes Produkt keine der vorgenannten Daten, wird es einfach übersprungen.

Nach Abschluss des Scrapings wird der Browser geschlossen und die extrahierten Produktdaten werden in einer CSV-Datei namens amazon_products_bdata_listings.csv gespeichert.

Wichtig: Vergessen Sie nicht, IHR_BRIGHTDATA_BENUTZERNAMEIHR_BRIGHTDATA_PASSWORT und IHR_BRIGHTDATA_HOST durch Ihre eindeutigen Bright Data-Zonenkontodetails zu ersetzen (zu finden auf der Registerkarte „Zugangsparameter“).

Führen Sie den Code von Ihrem Terminal oder Ihrer Shell aus mit folgendem Befehl aus:

python3 amazon_scraper_bdata.py

Ihre Ausgabe sollte wie folgt aussehen:

product_name,rating,number_of_reviews,price
Women's Square Neck Bodice Dress Sleeveless Tank Top Stretch Flare Mini Dresses,N/A,131,$32.99
"Women's Swiftwater Sandal, Lightweight and Sporty Sandals for Women",N/A,"35,941",$19.95
Women's Elegant Sleeveless Off Shoulder Bodycon Long Formal Party Evening Dress,N/A,"3,122",$49.99
Women 2023 Summer Sleeveless Tank Dresses Crew Neck Slim Fit Short Casual Ruched Bodycon Party Club Mini Dress,N/A,"40,245",$33.99
"Infinity Dress with Bandeau, Convertible Bridesmaid Dress, Long, Plus Size, Multi-Way Dress, Twist Wrap Dress",N/A,"11,412",$49.99
…output omitted…

Obwohl das manuelle Scraping von Amazon auf gewisse Hürden stoßen kann, wie z. B. CAPTCHAs und Zugriffsbeschränkungen, bietet der Scraping-Browser von Bright Data die nötige Belastbarkeit und Flexibilität, um diese Herausforderungen zu bewältigen und eine ununterbrochene Datenextraktion zu gewährleisten.

Bright Data Amazon-Datensatz

Wenn Sie Daten nicht manuell scrapen möchten, bietet Bright Data auch vorgefertigte Amazon-Datensätze an. Diese Datensätze enthalten sämtliche Informationen, von Produktdetails bis hin zu Nutzerbewertungen. Die Verwendung dieser Datensätze bedeutet, dass Sie Websites nicht selbst scrapen müssen, sondern die Daten bereits für Sie geordnet sind.

Öffnen Sie Ihr Bright Data-Dashboard und klicken Sie im linken Bereich auf „ Datensätze und Web-Scraper-IDE “, um die entsprechenden Datensätze zu finden. Klicken Sie anschließend auf Daten aus dem Datenmarktplatz abrufen:

Als Nächstes geben Sie in der Suchleiste „Amazon“ ein. Klicken Sie dann auf „ Datensatz anzeigen“:

Wählen Sie den von Ihnen gewünschten Datensatz aus. Sie können Ihre Auswahl mithilfe von Filtern eingrenzen. Bedenken Sie, dass die Kosten von der gewünschten Datenmenge abhängen. Sie können also je nach Bedarf und Budget auswählen:

Den in dieser Anleitung verwendeten Code finden Sie im folgenden GitHub-Repository.

Fazit

In dieser Anleitung haben Sie gelernt, wie man mit Python manuell Daten von Amazon erfasst, was durchaus seine Tücken hat, z. B. CAPTCHAs und Ratenbeschränkungen, die ein effizientes Daten-Scraping erschweren können. Allerdings kann der Einsatz der Tools von Bright Data und deren Scraping-Browser diesen Prozess optimieren und solche Probleme abschwächen.

Bright Data bietet Tools, mit denen die Datenerfassung von Websites, einschließlich Amazon, erheblich vereinfacht wird. Dank dieser Tools werden schwierige Web-Scraping-Aufgaben zu einfachen Vorgängen, die Ihnen Zeit und Energie sparen.

Des Weiteren bietet Bright Data vorgefertigte Datensätze, speziell für Amazon. Auf diese Weise müssen Sie nicht erst klein anfangen, sondern können direkt auf enorme Datenmengen von Amazon zugreifen.

Durch den Einsatz der Bright Data-Tools wird die Datenerfassung zu einem Kinderspiel und öffnet Ihnen Türen zu neuen Einsichten und Erkenntnissen. Tauchen Sie ein und entdecken Sie neue Datenmöglichkeiten mit Bright Data!