Stellen Sie sich vor, Sie wären ein abenteuerlustiger Entdecker, der kopfüber in das weite und geheimnisvolle Reich des Amazonas eintaucht – nicht in den Regenwald, sondern in den Online-Einzelhandelsriesen. Mit jedem Klick entdecken Sie unschätzbare Schätze und tauchen tiefer in das Neuland der Daten ein.
In dieser spannenden Expedition präsentieren wir eine Schritt-für-Schritt-Anleitung, um sich im dichten, digitalen Dschungel des Amazon Web Scraping zurechtzufinden. Bereiten Sie sich auf eine unvergleichliche Reise vor, ausgestattet mit Expertentipps und -tricks, um wertvolle Informationen mit beispielloser Präzision zu extrahieren.
Inhaltsverzeichnis
- Welche Daten Sie von Amazon extrahieren sollten
- Einige Grundvoraussetzungen
- Vorbereitung zum Schaben
- Scraping von Amazon-Produktinformationen
- So kratzen Sie mehrere Seiten bei Amazon
- Scraping Amazon: FAQs
- Abschluss
Nehmen Sie also Ihren Mut zusammen, schnüren Sie Ihre virtuellen Stiefel und beginnen Sie gemeinsam unser datengesteuertes Abenteuer!
Welche Daten Sie von Amazon extrahieren sollten
Es gibt zahlreiche Datenpunkte, die mit einem Amazon-Produkt verbunden sind, aber die wichtigsten Elemente, auf die man sich beim Scraping konzentrieren sollte, sind:
- Produktname
- Kosten
- Einsparungen (falls zutreffend)
- Artikelübersicht
- Zugehörige Funktionsliste (falls verfügbar)
- Bewertungsergebnis
- Produktvisualisierungen
Obwohl dies die wichtigsten Aspekte sind, die beim Scraping eines Amazon-Artikels berücksichtigt werden müssen, ist es wichtig zu beachten, dass die von Ihnen extrahierten Informationen je nach Ihren spezifischen Zielen variieren können.
Einige Grundvoraussetzungen
Um eine Suppe zuzubereiten, benötigen wir die richtigen Zutaten. Ebenso erfordert unser neuer Web-Scraper spezielle Komponenten.
- Python — Seine Benutzerfreundlichkeit und umfangreiche Bibliothekssammlung machen Python zur ersten Wahl für Web Scraping. Wenn es noch nicht installiert ist, lesen Sie dieses Handbuch.
- BeautifulSoup – Dies ist eine von vielen Web-Scraping-Bibliotheken, die für Python verfügbar sind. Seine Einfachheit und saubere Bedienung machen es zu einer beliebten Wahl für Web-Scraping. Nach der erfolgreichen Installation von Python können Sie Beautiful Soup installieren, indem Sie Folgendes ausführen: pip install bs4
- Grundlegendes Verständnis von HTML-Tags — Konsultieren Sie dieses Tutorial, um sich die notwendigen Kenntnisse über HTML-Tags anzueignen.
- Webbrowser — Da wir viele irrelevante Informationen aus einer Website herausfiltern müssen, sind zum Filtern bestimmte IDs und Tags erforderlich. Zur Identifizierung dieser Tags ist ein Webbrowser wie Google Chrome oder Mozilla Firefox hilfreich.
Vorbereitung zum Schaben
Stellen Sie zunächst sicher, dass Python installiert ist. Wenn Sie nicht über Python 3.8 oder höher verfügen, besuchen Sie python.org, um die neueste Version herunterzuladen und zu installieren.
Erstellen Sie als Nächstes ein Verzeichnis zum Speichern Ihrer Web-Scraping-Codedateien für Amazon. Im Allgemeinen ist es eine gute Idee, eine virtuelle Umgebung für Ihr Projekt einzurichten.
Verwenden Sie die folgenden Befehle, um eine virtuelle Umgebung unter macOS und Linux zu erstellen und zu aktivieren:
$ python3 -m venv .env
$ source .env/bin/activate
Für Windows-Benutzer unterscheiden sich die Befehle geringfügig:
d:amazon>python -m venv .env
d:amazon>.envscriptsactivate
Jetzt ist es an der Zeit, die notwendigen Python-Pakete zu installieren.
Sie benötigen Pakete für zwei Hauptaufgaben: den HTML-Code abrufen und ihn analysieren, um relevante Daten zu extrahieren.
Die Requests-Bibliothek ist eine weit verbreitete Python-Bibliothek eines Drittanbieters zum Senden von HTTP-Anfragen. Es bietet eine unkomplizierte und benutzerfreundliche Schnittstelle zum Senden von HTTP-Anfragen an Webserver und zum Empfangen von Antworten. Es ist vielleicht die bekannteste Bibliothek für Web Scraping.
Allerdings weist die Requests-Bibliothek eine Einschränkung auf: Sie gibt die HTML-Antwort als Zeichenfolge zurück, was beim Schreiben von Web-Scraping-Code schwierig sein kann, nach bestimmten Elementen wie Listenpreisen zu suchen.
Hier kommt Beautiful Soup ins Spiel. Beautiful Soup ist eine Python-Bibliothek für Web-Scraping, die Daten aus HTML- und XML-Dateien extrahiert. Es ermöglicht Ihnen, Informationen von einer Webseite abzurufen, indem Sie nach Tags, Attributen oder bestimmtem Text suchen.
Um beide Bibliotheken zu installieren, verwenden Sie den folgenden Befehl:
$ python3 -m pip install requests beautifulsoup4
Ersetzen Sie für Windows-Benutzer „python3“ durch „python“ und behalten Sie den Rest des Befehls bei:
d:amazon>python -m pip install requests beautifulsoup4
Beachten Sie, dass wir Version 4 der Beautiful Soup-Bibliothek installieren.
Jetzt testen wir die Requests-Scraping-Bibliothek. Erstellen Sie eine neue Datei mit dem Namen amazon.py und geben Sie den folgenden Code ein:
import requests
url = 'https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L'
response = requests.get(url)
print(response.text)
Speichern Sie die Datei und führen Sie sie über das Terminal aus.
$ python3 amazon.py
In den meisten Fällen können Sie den gewünschten HTML-Code nicht anzeigen. Amazon blockiert die Anfrage und Sie erhalten die folgende Antwort:
To discuss automated access to Amazon data please contact [email protected].
Wenn Sie den „response.status_code“ ausdrucken, werden Sie sehen, dass Sie einen 503-Fehler anstelle eines 200-Erfolgscodes erhalten.
Amazon weiß, dass diese Anfrage nicht von einem Browser stammt und blockiert sie. Diese Praxis ist auf vielen Websites üblich. Amazon blockiert möglicherweise Ihre Anfragen und gibt einen Fehlercode zurück, der mit 500 oder manchmal sogar 400 beginnt.
Eine einfache Lösung besteht darin, mit Ihrer Anfrage Header zu senden, die denen eines Browsers ähneln.
Manchmal reicht es aus, nur den Benutzeragenten zu senden. In anderen Fällen müssen Sie möglicherweise zusätzliche Header senden, z. B. den Accept-Language-Header.
Um den von Ihrem Browser gesendeten Benutzeragenten zu finden, drücken Sie F12, öffnen Sie die Registerkarte „Netzwerk“ und laden Sie die Seite neu. Wählen Sie die erste Anfrage aus und prüfen Sie die Anfrage-Header.
Kopieren Sie diesen User-Agent und erstellen Sie ein Wörterbuch für die Header, wie in diesem Beispiel mit User-Agent- und Accept-Language-Headern:
custom_headers = { '
user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36',
'accept-language': 'en-GB,en;q=0.9',
}
Anschließend können Sie dieses Wörterbuch als optionalen Parameter in der get-Methode senden:
response = requests.get(url, headers=custom_headers
Scraping von Amazon-Produktinformationen
Beim Web-Scraping von Amazon-Produkten werden Sie normalerweise mit zwei Arten von Seiten interagieren: der Kategorieseite und der Produktdetailseite.
Besuchen Sie uns zum Beispiel https://www.amazon.com/b?node=12097479011 oder suchen Sie bei Amazon nach Over-Ear-Kopfhörern. Die Seite, auf der die Suchergebnisse angezeigt werden, wird als Kategorieseite bezeichnet.
Auf der Kategorieseite werden der Produkttitel, das Produktbild, die Produktbewertung, der Produktpreis und vor allem die Seite mit den Produkt-URLs angezeigt. Um auf weitere Informationen wie Produktbeschreibungen zuzugreifen, müssen Sie die Produktdetailseite besuchen.
Lassen Sie uns die Struktur der Produktdetailseite analysieren.
Öffnen Sie eine Produkt-URL, z https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L, mit Chrome oder einem anderen modernen Browser. Klicken Sie mit der rechten Maustaste auf den Produkttitel und wählen Sie „Inspizieren“. Das HTML-Markup des Produkttitels wird hervorgehoben.
Sie werden feststellen, dass es sich um ein Span-Tag handelt, dessen ID-Attribut auf „productTitle“ gesetzt ist.
Klicken Sie ebenfalls mit der rechten Maustaste auf den Preis und wählen Sie „Inspizieren“, um das HTML-Markup des Preises anzuzeigen.
Die Dollar-Komponente des Preises befindet sich in einem Span-Tag mit der Klasse „a-price-whole“, während sich die Cent-Komponente in einem anderen Span-Tag mit der Klasse „a-price-fraction“ befindet.
Auf die gleiche Weise können Sie auch die Bewertung, das Bild und die Beschreibung finden.
Nachdem Sie diese Informationen gesammelt haben, fügen Sie die folgenden Zeilen zum vorhandenen Code hinzu:
response = requests.get(url, headers=custom_headers)
soup = BeautifulSoup(response.text, 'lxml')
Beautiful Soup bietet eine spezielle Methode zur Auswahl von Tags mithilfe der Suchmethoden. Alternativ werden auch CSS-Selektoren unterstützt. Sie können beide Ansätze verwenden, um das gleiche Ergebnis zu erzielen. In diesem Tutorial verwenden wir CSS-Selektoren, eine universelle Methode zum Auswählen von Elementen. CSS-Selektoren sind mit fast allen Web-Scraping-Tools zum Extrahieren von Amazon-Produktinformationen kompatibel.
Jetzt sind Sie bereit, das Soup-Objekt zum Abfragen spezifischer Informationen zu verwenden.
Produktnamen extrahieren
Der Produktname oder -titel befindet sich in einem span-Element mit der ID „productTitle“. Die Auswahl von Elementen mithilfe eindeutiger IDs ist einfach.
Betrachten Sie den folgenden Code als Beispiel:
title_element = soup.select_one('#productTitle')
Wir übergeben den CSS-Selektor an die Methode select_one, die eine Elementinstanz zurückgibt.
Um Informationen aus dem Text zu extrahieren, verwenden Sie das Textattribut.
title = title_element.text
Beim Drucken werden Ihnen möglicherweise einige Leerzeichen auffallen. Um dieses Problem zu beheben, fügen Sie einen .strip()-Funktionsaufruf wie folgt hinzu:
title = title_element.text.strip()
Produktbewertungen extrahieren
Das Einholen von Amazon-Produktbewertungen erfordert einen gewissen Mehraufwand.
Legen Sie zunächst einen Selektor für die Bewertung fest:
#acrPopover
Als nächstes verwenden Sie die folgende Anweisung, um das Element auszuwählen, das die Bewertung enthält:
rating_element = soup.select_one('#acrPopover')
Beachten Sie, dass der tatsächliche Bewertungswert im Titelattribut zu finden ist:
rating_text = rating_element.attrs.get('title')
print(rating_text)
# prints '4.6 out of 5 stars'
Verwenden Sie abschließend die Ersetzungsmethode, um die numerische Bewertung zu erhalten:
rating = rating_text.replace('out of 5 stars', '')
Produktpreis extrahieren
Der Produktpreis ist an zwei Stellen zu finden – unter dem Produkttitel und im Feld „Jetzt kaufen“.
Jedes dieser Tags kann verwendet werden, um die Produktpreise bei Amazon zu ermitteln.
Erstellen Sie einen CSS-Selektor für den Preis:
#price_inside_buybox
Übergeben Sie diesen CSS-Selektor wie folgt an die Methode select_one von BeautifulSoup:
price_element = soup.select_one('#price_inside_buybox')
Jetzt können Sie den Preis ausdrucken:
print(price_element.text)
Bild extrahieren
Um das Standardbild zu extrahieren, verwenden Sie den CSS-Selektor #landingImage. Mit diesen Informationen können Sie die folgenden Codezeilen schreiben, um die Bild-URL aus dem src-Attribut zu erhalten:
image_element = soup.select_one('#landingImage')
image = image_element.attrs.get('src')
Produktbeschreibung extrahieren
Der nächste Schritt beim Extrahieren von Amazon-Produktdaten ist das Abrufen der Produktbeschreibung.
Der Prozess bleibt konsistent – erstellen Sie einen CSS-Selektor und verwenden Sie die Methode select_one.
Der CSS-Selektor für die Beschreibung ist:
#productDescription
Dadurch können wir das Element wie folgt extrahieren:
description_element = soup.select_one('#productDescription')
print(description_element.text)
Umgang mit Produktlisten
Wir haben das Scraping von Produktinformationen untersucht, Sie müssen jedoch mit der Produktliste oder den Kategorieseiten beginnen, um auf die Produktdaten zugreifen zu können.
Zum Beispiel, https://www.amazon.com/b?node=12097479011 ist die Kategorieseite für Over-Ear-Kopfhörer.
Wenn Sie diese Seite untersuchen, werden Sie feststellen, dass alle Produkte in einem Div enthalten sind, das über ein eindeutiges Attribut [data-asin] verfügt. Innerhalb dieser Abteilung befinden sich alle Produktlinks in einem h2-Tag.
Mit diesen Informationen ist der CSS-Selektor:
[data-asin] h2 a
Sie können das href-Attribut dieses Selektors lesen und eine Schleife ausführen. Bedenken Sie jedoch, dass die Links relativ sind. Sie müssen die URLjoin-Methode verwenden, um diese Links zu analysieren.
from urllib.parse import urljoin
...
def parse_listing(listing_url):
…
link_elements = soup_search.select("[data-asin] h2 a")
page_data = []
for link in link_elements:
full_url = urljoin(search_url, link.attrs.get("href"))
product_info = get_product_info(full_url)
page_data.append(product_info)
Umgang mit Paginierung
Der Link zur nächsten Seite befindet sich in einem Link mit dem Text „Weiter“. Sie können nach diesem Link mithilfe des CSS-Operators „contains“ wie folgt suchen:
next_page_el = soup.select_one('a:contains("Next")')
if next_page_el:
next_page_url = next_page_el.attrs.get('href')
next_page_url = urljoin(listing_url, next_page_url)
Amazon-Daten exportieren
Die gescrapten Daten werden absichtlich als Wörterbuch zurückgegeben. Sie können eine Liste mit allen ausgekratzten Produkten erstellen.
def parse_listing(listing_url):
...
page_data = [] for link in link_elements:
...
product_info = get_product_info(full_url)
page_data.append(product_info)
Anschließend können Sie diese page_data verwenden, um ein Pandas DataFrame-Objekt zu erstellen:
df = pd.DataFrame(page_data)
df.to_csv('headphones.csv', index = False)
So kratzen Sie mehrere Seiten bei Amazon
Das Scraping mehrerer Seiten auf Amazon kann die Effektivität Ihres Web-Scraping-Projekts steigern, indem ein breiterer Datensatz zur Analyse bereitgestellt wird. Bei der Ausrichtung auf mehrere Seiten müssen Sie die Paginierung berücksichtigen, also den Prozess der Aufteilung von Inhalten auf mehrere Seiten.
Hier sind 6 wichtige Punkte, die Sie beachten sollten beim Scrapen mehrerer Seiten auf Amazon:
- Identifizieren Sie das Paginierungsmuster: Analysieren Sie zunächst die URL-Struktur der Kategorie- oder Suchergebnisseiten, um zu verstehen, wie Amazon seinen Inhalt paginiert. Dies kann ein Abfrageparameter (z. B. „?page=2“) oder eine in die URL eingebettete eindeutige Kennung sein.
- Extrahieren Sie den Link „Weiter“ zur Seite: Suchen Sie das Element (normalerweise ein Ankertag), das den Link zur nächsten Seite enthält. Verwenden Sie den entsprechenden CSS-Selektor oder die Beautiful Soup-Methode, um das href-Attribut dieses Elements zu extrahieren, das die URL für die nächste Seite ist.
- Konvertieren Sie relative URLs in absolute URLs: Da die extrahierten URLs möglicherweise relativ sind, verwenden Sie die
urljoin
Funktion aus demurllib.parse
Bibliothek, um sie in absolute URLs umzuwandeln. - Erstellen Sie eine Schleife: Implementieren Sie eine Schleife, die die Seiten durchläuft und von jeder Seite die gewünschten Daten extrahiert. Die Schleife sollte fortgesetzt werden, bis keine weiteren Seiten mehr vorhanden sind. Dies lässt sich feststellen, indem überprüft wird, ob der Link „Weiter“ auf der aktuellen Seite vorhanden ist.
- Verzögerungen zwischen Anfragen hinzufügen: Um eine Überlastung des Amazon-Servers oder die Auslösung von Anti-Bot-Maßnahmen zu vermeiden, führen Sie Verzögerungen zwischen Anfragen mithilfe von ein
time.sleep()
Funktion aus demtime
Bibliothek. Passen Sie die Dauer der Verzögerung an, um das Surfverhalten eines Menschen nachzuahmen. - Umgang mit CAPTCHAs und Blöcken: Wenn Sie beim Scraping mehrerer Seiten auf CAPTCHAs oder IP-Blöcke stoßen, sollten Sie die Verwendung von Proxys zum Rotieren von IP-Adressen oder dedizierten Scraping-Tools und -Diensten in Betracht ziehen, die diese Herausforderungen automatisch bewältigen können.
Nachfolgend finden Sie ein umfassendes YouTube-Video-Tutorial, das Sie durch den Prozess der Datenextraktion aus mehreren Seiten der Amazon-Website führt. Das Tutorial taucht tief in die Welt des Web Scraping ein und konzentriert sich auf Techniken, mit denen Sie effizient und effektiv wertvolle Informationen von zahlreichen Amazon-Seiten sammeln können.
Im gesamten Tutorial demonstriert der Moderator die Verwendung wichtiger Tools und Bibliotheken wie Python, BeautifulSoup und Requests und hebt gleichzeitig Best Practices hervor, um eine Blockierung oder Erkennung durch die Anti-Bot-Mechanismen von Amazon zu vermeiden. Das Video behandelt wichtige Themen wie den Umgang mit Paginierung, die Verwaltung von Ratenbeschränkungen und die Nachahmung eines menschenähnlichen Surfverhaltens.
Zusätzlich zu den Schritt-für-Schritt-Anleitungen im Video gibt das Tutorial auch nützliche Tipps und Tricks zur Optimierung Ihres Web-Scraping-Erlebnisses. Dazu gehören die Verwendung von Proxys zur Umgehung von IP-Einschränkungen, die Randomisierung von User-Agent- und Anforderungsheadern sowie die Implementierung einer ordnungsgemäßen Fehlerbehandlung, um einen reibungslosen und unterbrechungsfreien Scraping-Prozess sicherzustellen.
Scraping Amazon: FAQs
Wenn es darum geht, Daten von Amazon, einer beliebten E-Commerce-Plattform, zu extrahieren, müssen bestimmte Dinge beachtet werden. Werfen wir einen Blick auf die häufig gestellten Fragen zum Scraping von Amazon-Daten.
1. Ist es legal, Amazon zu scrapen?
Das Scrapen öffentlich verfügbarer Daten aus dem Internet ist legal, und dazu gehört auch das Scrapen von Amazon. Sie können Informationen wie Produktdetails, Beschreibungen, Bewertungen und Preise legal auslesen. Beim Scrapen von Produktbewertungen sollten Sie jedoch beim Schutz personenbezogener Daten und des Urheberrechts vorsichtig sein. Beispielsweise können Name und Avatar des Rezensenten personenbezogene Daten darstellen, während der Rezensionstext möglicherweise urheberrechtlich geschützt ist. Seien Sie stets vorsichtig und lassen Sie sich beim Scrapen solcher Daten rechtlich beraten.
2. Erlaubt Amazon Scraping?
Obwohl das Scraping öffentlich verfügbarer Daten legal ist, ergreift Amazon manchmal Maßnahmen, um das Scraping zu verhindern. Zu diesen Maßnahmen gehören die Ratenbegrenzung von Anfragen, das Verbot von IP-Adressen und die Verwendung von Browser-Fingerprinting zur Erkennung von Scraping-Bots. Amazon blockiert Web Scraping normalerweise mit dem Erfolgsstatus-Antwortcode 200 OK und verlangt die Übergabe eines CAPTCHAs oder zeigt eine HTTP-Fehlermeldung 503 „Service nicht verfügbar“ an, um den Vertrieb für eine kostenpflichtige API zu kontaktieren.
Es gibt Möglichkeiten, diese Maßnahmen zu umgehen, aber ethisches Web Scraping kann dabei helfen, sie gar nicht erst auszulösen. Beim ethischen Web-Scraping geht es darum, die Häufigkeit von Anfragen zu begrenzen, geeignete Benutzeragenten zu verwenden und übermäßiges Scraping zu vermeiden, das die Leistung der Website beeinträchtigen könnte. Durch ethisches Scraping können Sie das Risiko eines Verbots oder rechtlicher Konsequenzen verringern und gleichzeitig nützliche Daten von Amazon extrahieren.
3. Ist es ethisch vertretbar, Amazon-Daten zu extrahieren?
Ethisches Scraping bedeutet, die Zielwebsite zu respektieren. Auch wenn es unwahrscheinlich ist, dass Sie die Amazon-Website mit zu vielen Anfragen überlasten, sollten Sie dennoch ethische Scraping-Richtlinien befolgen. Ethisches Scraping kann das Risiko rechtlicher Probleme oder der Auseinandersetzung mit Anti-Scraping-Maßnahmen minimieren.
4. Wie kann ich verhindern, dass ich beim Scrapen von Amazon gebannt werde?
Um beim Scraping von Amazon nicht gesperrt zu werden, sollten Sie Ihre Anfrageraten begrenzen, Scraping zu Spitzenzeiten vermeiden, eine intelligente Proxy-Rotation verwenden und geeignete Benutzeragenten und Header verwenden, um eine Entdeckung zu vermeiden. Extrahieren Sie außerdem nur die Daten, die Sie benötigen, und verwenden Sie Scraping-Tools oder Scraping-Bibliotheken von Drittanbietern.
5. Welche Risiken bestehen beim Scraping von Amazon?
Das Scrapen von Amazon-Daten birgt potenzielle Risiken wie rechtliche Schritte und Kontosperrung. Amazon setzt Anti-Bot-Maßnahmen ein, um Scraping zu erkennen und zu verhindern, darunter IP-Adresssperren, Ratenbegrenzung und Browser-Fingerprinting. Durch ethisches Handeln können Sie diese Risiken jedoch mindern.
Abschluss
Während wir aus dem spannenden Labyrinth des Amazon Web Scraping herauskommen, ist es an der Zeit, sich einen Moment Zeit zu nehmen, um das unschätzbar wertvolle Wissen und die Fähigkeiten zu würdigen, die wir auf dieser aufregenden Reise gesammelt haben. Mit ProxyCompass als Ihrem vertrauenswürdigen Leitfaden haben Sie die Herausforderungen beim Extrahieren unbezahlbarer Daten aus dem Einzelhandelsriesen erfolgreich gemeistert. Wenn Sie sich auf den Weg machen und Ihr neu gewonnenes Fachwissen mit Finesse einsetzen, denken Sie daran, dass sich der digitale Dschungel ständig weiterentwickelt.
Bleiben Sie neugierig, schärfen Sie Ihre Web-Scraping-Machete weiter und erobern Sie weiterhin die sich ständig verändernde Landschaft der Datenextraktion. Bis zu unserer nächsten mutigen Expedition, unerschrockener Entdecker, mögen Ihre datengesteuerten Quests fruchtbar und lohnend sein!