Heim BlogWeb-Scraping So kratzen Sie Google Shopping mit Python

So kratzen Sie Google Shopping mit Python

von Kadek

TL;DR: Google Shopping Search Scraper

Für alle, die es eilig haben, hier ist der fertige Code, den wir in diesem Tutorial behandeln:

	import requests
	import pandas as pd
	
	
	keywords = (
	   'katana set',
	   'katana for kids',
	   'katana stand',
	)
	
	
	for keyword in keywords:
	   products = ()
	
	
	   payload = {
		   'api_key': 'YOUR_API_KEY',
		   'query': keyword,
		   'country_code': 'it',
		   'tld': 'it',
		   'num': '100'
	   }
	
	
	   response = requests.get('https://api.scraperapi.com/structured/google/shopping', params=payload)
	   data = response.json()
	
	
	   organic_results = data('shopping_results')
	   print(len(organic_results))
	   for product in organic_results:
		   products.append({
			   'Name': product('title'),
			   'ID': product('docid'),
			   'Price': product('price'),
			   'URL': product('link'),
			   'Thumbnail': product('thumbnail')
		   })
	
	
	   df = pd.DataFrame(products)
	   df.to_csv(f'{keyword}.csv')

Erstellen Sie vor dem Ausführen des Skripts ein ScraperAPI-Konto und fügen Sie Ihren API-Schlüssel hinzu api_key Parameter innerhalb der payload.

Google Shopping verstehen

Google Shopping ist eine Suchmaschine, die es Verbrauchern ermöglicht, Produkte von Tausenden von Anbietern an einem einzigen Ort zu finden, zu vergleichen und zu kaufen.

Google Shopping-SuchergebnisGoogle Shopping-Suchergebnis

Es bietet mehrere Funktionen, die das Finden der richtigen Option erleichtern, z. B. das Sortieren von Produkten nach Preis, Marke, Versand oder ob der Artikel im Angebot ist oder nicht.

Nachdem Sie auf ein Produkt geklickt haben, stellt Google Shopping mehr Kontext bereit oder leitet Sie direkt zur Produktseite des Verkäufers weiter, wo Sie es kaufen können.

Produktdetails von Google Shopping anzeigenProduktdetails von Google Shopping anzeigen

Im Gegensatz zu E-Commerce-Marktplätzen funktioniert Google Shopping also eher wie ein Verzeichnis als wie eine echte E-Commerce-Website. Dies macht es zu einer großartigen Quelle für Produktdaten, da Sie Tausende von Produktlisten sammeln können, die für Ihre Ziel-Keywords ranken.

Die Herausforderung, Google Shopping zu eliminieren

Google Shopping nutzt fortschrittliche Anti-Scraping-Mechanismen, um zu verhindern, dass Bots Produktdaten in beliebigem Umfang sammeln. Ohne die richtige Infrastruktur sind Ihre Scraper meist von Anfang an blockiert.

Techniken wie Ratenbegrenzung, Browser-Fingerprinting und CAPTCHAs gehören zu den am häufigsten verwendeten, um Ihre Skripte von der Website fernzuhalten. Allerdings verwendet Google Shopping auch JavaScript, um seine dynamischen Ergebnisseiten bereitzustellen, was die Ausführung Ihrer Scraping-Projekte rechentechnisch (und finanziell) noch teurer macht, da Sie das JS-Rendering berücksichtigen müssen.

Um diese Herausforderungen zu meistern, können Sie eine Scraping-Lösung wie den Google Shopping-Endpunkt von ScraperAPI verwenden, der es Ihnen ermöglicht, Google Shopping-Suchergebnisse im JSON-Format mit nur einem API-Aufruf zu scrapen.

Notiz: Schauen Sie sich unser Tutorial an, wenn Sie daran interessiert sind, Google-Suchergebnisse zu entfernen.

Scraping von Google Shopping-Ergebnissen mit Python

Im weiteren Verlauf des Tutorials zeige ich Ihnen, wie Sie mit dieser SERP-API Daten aus mehreren Suchbegriffen sammeln.

Am Ende können Sie Details sammeln wie:

  • Produktname
  • Produkt ID
  • Preis
  • URL verknüpfen
  • Miniaturansicht

Und mehr.

Notiz: Um diesem Tutorial zu folgen, melden Sie sich für ein kostenloses ScraperAPI-Konto an, um einen eindeutigen API-Schlüssel und 5.000 API-Credits zu erhalten.

Lass uns anfangen!

Schritt 1: Richten Sie Ihr Python-Projekt ein

Stellen Sie zunächst sicher, dass die Python 3+-Version auf Ihrem Computer installiert ist. Sie können dies von Ihrem Terminal aus mit dem Befehl überprüfen python --version sowohl auf Mac als auch auf Windows.

Installieren Sie dann die erforderlichen Abhängigkeiten mit pip:

	pip install requests pandas 

Wir verwenden Anfragen, um die zu senden get() Anfrage an den Endpunkt senden und die benötigten Daten extrahieren, während Pandas uns dabei hilft, die Daten in einen DataFrame zu formatieren und in eine CSV-Datei zu exportieren.

Schritt 2: Schreiben Sie Ihre Nutzlast

Um Daten vom Endpunkt abzurufen, müssen wir zunächst einen einrichten payload mit dem notwendigen Kontext für die API.

Unser Google Shopping-Endpunkt akzeptiert die folgenden Parameter:

Parameter Beschreibung
api_key Ihr einzigartiger API-Schlüssel zur Authentifizierung
query Der Suchbegriff, nach dem Sie Produkte durchsuchen möchten
country_code Dieser Parameter bestimmt die IP des Landes. Wenn eingestellt auf usIhre Anfragen werden nur von in den USA ansässigen Proxys gesendet.
tld Geben Sie die Top-Level-Domain an, auf die Sie abzielen möchten, z. B. „.com“ oder „.co.uk“.
num Legt die Anzahl der Ergebnisse fest, die Sie pro Anfrage erhalten.
start Legen Sie den Startoffset in der Ergebnisliste fest. Zum Beispiel, start=10 legt das erste Element in der Ergebnisliste als 10. Suchergebnis fest

Notiz: Weitere Informationen zu diesen Parametern finden Sie in unserer Dokumentation.

Nehmen wir an, wir möchten mit dem Verkauf von Katanas in Italien beginnen, also haben wir beschlossen, die Top-100-Ergebnisse für die Suchanfrage herauszusuchen katana set um unsere Angebote zu verbessern und sicherzustellen, dass unsere Preise wettbewerbsfähig bleiben.

Hier ist mein Vorschlag payload:

	payload = {
		'api_key': 'YOUR_API_KEY',
		'query': 'katana set',
		'country_code': 'it',
		'tld': 'it',
		'num': '100'
	 }
	 

Schritt 3: Senden Sie eine Get-Anfrage an ScraperAPI

Um eine zu senden get() Anfrage an den Google Shopping-Endpunkt:

  • Importieren Sie Ihre Abhängigkeiten oben in Ihrem Python-Skript vor der Nutzlast.
	import requests
	import pandas as pd

  • Senden Sie dann Ihre get()-Anfrage an https://api.scraperapi.com/structured/google/shopping Endpunkt, mit Ihrem payload als params.
	response = requests.get('https://api.scraperapi.com/structured/google/shopping', params=payload)
	print(response.content)

Zum Testen drucken wir die von der API zurückgegebene JSON-Antwort – für dieses von mir festgelegte Beispiel num Zu 1:

	"shopping_results":(
	{
	   "position":1,
	   "docid":"766387587079352848",
	   "link":"https://www.google.it/url?url=https://www.armiantichesanmarino.eu/set-tre-katana-di-roronoa-zoro-one-piece-complete-di-fondina.html&rct=j&q=&esrc=s&opi=95576897&sa=U&ved=0ahUKEwiKztDw0bKFAxWqVqQEHUVeCQwQ2SkIwAE&usg=AOvVaw2UtBBfaC9Gfxh_WwD9eB_Q",
	   "title":"Set tre katana di roronoa zoro (one piece) complete di fondina",
	   "source":"AAnticheSanMarino",
	   "price":"89,90\\xc2\\xa0\\xe2\\x82\\xac",
	   "extracted_price":89.9,
	   "thumbnail":"https://encrypted-tbn0.gstatic.com/shopping?q=tbn:ANd9GcTNZtKMoGht9qQ-AsOQQnf-ULYCPLrGvY5MKBPVUwQ-JsVIC88q792L55uooEvWAuhFjXDBD84H7Hp8gOi7TIAoJugxFUz6AMmoBSrjF5V4&usqp=CAE",
	   "delivery_options":"Consegna a 9,00\\xc2\\xa0\\xe2\\x82\\xac",
	   "delivery_options_extracted_price":9
	}
 )


Schritt 4: Extrahieren Sie bestimmte Datenpunkte aus der JSON-Antwort

Der Endpunkt liefert viele Details zu den Produkten. In unserem Fall möchten wir jedoch nur den Produkttitel, die Produkt-ID, den Preis, die Produkt-URL und die Miniaturbild-URL erfassen.

Glücklicherweise gibt der Endpunkt alle diese Informationen in einer JSON-Antwort mit vorhersehbaren Schlüssel-Wert-Paaren zurück.

Mit diesen Schlüssel-Wert-Paaren können wir bestimmte Datenpunkte aus der Antwort extrahieren:

	response = requests.get('https://api.scraperapi.com/structured/google/shopping', params=payload)
	data = response.json()
	
	
	organic_results = data('shopping_results')
	for product in organic_results:
	   product_title = product('title')
	
	
	print(product_title)

Nach dem Zugriff shopping_resultsdas die organischen Ergebnisse für die spezifische Abfrage enthält, durchlaufen wir die Ergebnisse und erhalten die title Schlüsselwert, der der Produktname ist.

	Set tre katana di roronoa zoro (one piece) complete di fondina

Dann machen wir dasselbe für die restlichen Elemente:

	for product in organic_results:
	product_title = product('title')
	product_id = product('docid')
	product_price = product('price')
	product_url = product('link')
	product_image = product('thumbnail')

Schritt 5: Google Shopping-Ergebnisse exportieren

Speichern Sie extrahierte Daten in einer JSON-Datei

Bevor ich Ihnen zeige, wie Sie die Daten an eine CSV-Datei senden, gibt es eine schnelle Möglichkeit, alle diese Daten einfach aus dem Terminal zu exportieren, indem wir sie in einer JSON-Datei speichern.

	import requests
	import json
	
	
	payload = {
	   'api_key': 'b32f530be73cba3064c90d03f67c8e89',
	   'query': 'katana set',
	   'country_code': 'it',
	   'tld': 'it',
	   'num': '100'
	}
	
	
	response = requests.get('https://api.scraperapi.com/structured/google/shopping', params=payload)
	data = response.json()
	
	
	with open('google-shopping-results', 'w') as f:
	   json.dump(data, f)

In diesem Szenario müssen wir nicht viel tun, da die Antwort bereits aus JSON-Daten besteht. Alles was wir tun müssen ist import JSON in unser Projekt und dann dump() die Daten in eine Datei.

Speichern Sie extrahierte Daten in einer CSV-Datei

Um unsere JSON-Daten als CSV-Datei zu exportieren, erstellen Sie vor dem eine leere Liste payload.

Da wir dann bereits über die Logik verfügen, bestimmte Datenpunkte aus der JSON-Antwort auszuwählen, hängen wir die extrahierten Produktinformationen mithilfe von an diese leere Liste an append() Methode.

	products.append({
		'Name': product_title,
		'ID': product_id,
		'Price': product_price,
		'URL': product_url,
		'Thumbnail': product_image
	}) 

Dieser Ausschnitt geht in Ihr for Schleife. Auf diese Weise fügt Ihr Skript nach jeder Iteration jedes Produktdetail als einzelnes Element hinzu.

Um es auszuprobieren, drucken wir es aus products und sehen, was es zurückgibt.

	{
		"Name":"Set di 3 katane rosse con supporto",
		"ID":"14209320763374218382",
		"Price":"85,50\\xa0€",
		"URL":"https://www.google.it/url?url=https://www.desenfunda.com/it/set-di-3-katane-rosse-con-supporto-ma-32583-230996.html&rct=j&q=&esrc=s&opi=95576897&sa=U&ved=0ahUKEwjo4-SRh7OFAxVfVqQEHaxtDQAQ2SkIxww&usg=AOvVaw0ktLGrn1luMDxTqbWCa0WG",
		"Thumbnail":"https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcRyyVQ8ae4Fxo0Nw5wwFI2xYMo6dIj_sWYfUqc1vbR8MuS-mybf4MZSb3LgprZrSKkhwP1eU97XYpVO99E9YF3VwaASfIeMtjldEd2Bf2tS5ghm3OWXWtDvHQ&usqp=CAE"
	  }, MORE DATA

Profi-Tipp

Sie können Ihren Code vereinfachen, indem Sie die Informationen beim Scrapen anhängen:

			for product in organic_results:
			products.append({
				'Name': product('title'),
				'ID': product('docid'),
				'Price': product('price'),
				'URL': product('link'),
				'Thumbnail': product('thumbnail')
			})
		 
		

Jetzt wissen wir, dass es funktioniert und die Daten in unserem Inneren sind products Liste ist es an der Zeit, mit Pandas einen DataFrame zu erstellen und die Informationen als CSV-Datei zu speichern.

	df = pd.DataFrame(products)
	df.to_csv('google-shopping-results.csv', index=False)

In Ihrem Ordner finden Sie die gespeicherte CSV-Datei:

Exportieren der Ergebnisse aus Google Shopping CSVExportieren der Ergebnisse aus Google Shopping CSV

Notiz: Denken Sie daran, dass der Index bei 0 beginnt, sodass 99 das letzte Ergebnis ist.

Herzlichen Glückwunsch, Sie haben gerade die Google Shopping-Suchergebnisse gelöscht!

Scraping mehrerer Google Shopping-Suchbegriffe

Für die meisten Projekte möchten Sie den Überblick über mehrere Suchbegriffe behalten. Dazu optimieren wir den Code, den wir bereits geschrieben haben, ein wenig.

Fügen wir zunächst eine Liste mit Begriffen hinzu, die wir durchlaufen werden.

	keywords = (
	'katana set',
	'katana for kids',
	'katana stand'
 ) 

Als nächstes erstellen wir ein neues for Schleife und verschieben Sie unseren gesamten Code hinein, indem Sie unsere Variable zur Nutzlast hinzufügen.

	for keyword in keywords:
	payload = {
		'api_key': 'YOUR_API_KEY',
		'query': keyword,
		'country_code': 'it',
		'tld': 'it',
		'num': '100'
	} 

Von da an bleibt der Code derselbe. Wir möchten jedoch nicht, dass alle Ergebnisse gemischt werden. Anstatt also alles in dieselbe Datei einzufügen, weisen wir unser Skript an, für jedes Schlüsselwort eine neue Datei zu erstellen:

  • Verschieben Sie die leere Liste in unsere größere for Schleife – Sie können sie vor dem hinzufügen payload
  • Anschließend verwenden wir die Schlüsselwortvariable, um den Dateinamen dynamisch zu erstellen
	products = ()
	#HERE'S THE REST OF THE CODE
 
 
	df = pd.DataFrame(products)
	df.to_csv(f'{keyword}.csv')

Für jeden Suchbegriff im keywords Liste, unser Scraper erstellt eine neue products Leere Liste, extrahieren Sie die 100 besten Produktergebnisse und hängen Sie alle diese Daten an productsund exportieren Sie dann die Liste in eine CSV-Datei.

Exportieren einer CVS-Datei aus den Google-Einkaufsergebnissen Exportieren einer CVS-Datei aus den Google-Einkaufsergebnissen

Fügen Sie so viele Suchbegriffe hinzu, wie Sie benötigen keywords Variable, um dieses Projekt zu skalieren, und ScraperAPI erledigt den Rest.

Related Posts

Hinterlasse einen Kommentar