Beranda BlogPengikisan web Cara mengikis Google Belanja dengan Python

Cara mengikis Google Belanja dengan Python

oleh Kadek

TL;DR: Pengikis Pencarian Google Belanja

Bagi mereka yang terburu-buru, berikut kode selesai yang akan kita bahas dalam tutorial ini:

	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')

Sebelum menjalankan skrip, buat akun ScraperAPI dan tambahkan kunci API Anda api_key Parameter di dalam payload.

Memahami Google Belanja

Google Shopping adalah mesin pencari yang memungkinkan konsumen menemukan, membandingkan, dan membeli produk dari ribuan penjual di satu tempat.

Hasil pencarian Google BelanjaHasil pencarian Google Belanja

Ia menawarkan beberapa fitur yang memudahkan menemukan opsi yang tepat, seperti: B. menyortir produk berdasarkan harga, merek, pengiriman atau apakah barang tersebut dijual atau tidak.

Setelah Anda mengklik suatu produk, Google Shopping memberikan lebih banyak konteks atau membawa Anda langsung ke halaman produk penjual tempat Anda dapat membelinya.

Lihat detail produk dari Google ShoppingLihat detail produk dari Google Shopping

Jadi, tidak seperti pasar e-niaga, Google Shopping berfungsi lebih seperti direktori dibandingkan situs web e-niaga sebenarnya. Ini menjadikannya sumber data produk yang bagus karena Anda dapat mengumpulkan ribuan daftar produk yang diberi peringkat untuk kata kunci target Anda.

Tantangan menghilangkan Google Shopping

Google Shopping menggunakan mekanisme anti-scraping yang canggih untuk mencegah bot mengumpulkan data produk apa pun. Tanpa infrastruktur yang tepat, scraper Anda biasanya diblokir sejak awal.

Teknik seperti pembatasan kecepatan, sidik jari browser, dan CAPTCHA adalah beberapa teknik yang paling umum digunakan untuk menjauhkan skrip Anda dari situs web. Namun, Google Shopping juga menggunakan JavaScript untuk menyajikan halaman hasil dinamisnya, yang membuat proyek scraping Anda menjadi lebih mahal secara komputasi (dan finansial) untuk dijalankan karena Anda harus memperhitungkan rendering JS.

Untuk mengatasi tantangan ini, Anda dapat menggunakan solusi scraping seperti titik akhir Google Shopping ScraperAPI, yang memungkinkan Anda melakukan scraping hasil penelusuran Google Shopping dalam format JSON hanya dengan satu panggilan API.

catatan: Lihat tutorial kami jika Anda tertarik untuk menghapus hasil pencarian Google.

Mengikis hasil Google Shopping dengan Python

Nanti di tutorial, saya akan menunjukkan cara mengumpulkan data dari beberapa istilah pencarian menggunakan SERP API ini.

Pada akhirnya Anda dapat mengumpulkan detail seperti:

  • Nama Produk
  • ID Produk
  • Harga
  • URL tautan
  • gambar kecil

Dan banyak lagi.

catatan: Untuk mengikuti tutorial ini, daftar akun ScraperAPI gratis untuk menerima kunci API unik dan 5.000 kredit API.

Mari kita mulai!

Langkah 1: Siapkan proyek Python Anda

Pertama, pastikan versi Python 3+ terinstal di komputer Anda. Anda dapat memeriksanya dari terminal Anda menggunakan perintah python --version di Mac dan Windows.

Kemudian instal dependensi yang diperlukan dengan pip:

	pip install requests pandas 

Kami menggunakan permintaan untuk mengirim get() Kirim permintaan ke titik akhir dan ekstrak data yang kita perlukan sementara Pandas membantu kita memformat data menjadi DataFrame dan mengekspornya ke file CSV.

Langkah 2: Tulis muatan Anda

Untuk mengambil data dari titik akhir, pertama-tama kita perlu menyiapkannya payload dengan konteks yang diperlukan untuk API.

Titik akhir Google Belanja kami menerima parameter berikut:

parameter Keterangan
api_key Kunci API unik Anda untuk autentikasi
query Istilah pencarian yang ingin Anda cari produknya
country_code Parameter ini menentukan IP negara. Saat diatur ke usPermintaan Anda hanya akan dikirim dari proxy yang berbasis di AS.
tld Tentukan domain tingkat atas yang ingin Anda targetkan, mis. Misalnya “.com” atau “.co.uk”.
num Menetapkan jumlah hasil yang Anda terima per kueri.
start Atur offset awal di daftar hasil. Misalnya, start=10 menetapkan elemen pertama dalam daftar hasil sebagai hasil pencarian ke-10

catatan: Untuk informasi selengkapnya tentang parameter ini, lihat dokumentasi kami.

Katakanlah kita ingin mulai menjual katana di Italia, jadi kita memutuskan untuk memilih 100 hasil teratas untuk permintaan pencarian katana set untuk meningkatkan penawaran kami dan memastikan harga kami tetap kompetitif.

Ini saran saya payload:

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

Langkah 3: Kirim permintaan dapatkan ke ScraperAPI

Untuk mengirim satu get() Permintaan ke titik akhir Google Shopping:

  • Impor dependensi Anda di bagian atas skrip Python Anda sebelum payload.
	import requests
	import pandas as pd

  • Kemudian kirimkan permintaan get() Anda ke https://api.scraperapi.com/structured/google/shopping Titik akhir, dengan milikmu payload sebagai params.
	response = requests.get('https://api.scraperapi.com/structured/google/shopping', params=payload)
	print(response.content)

Untuk mengujinya, kami mencetak respons JSON yang dikembalikan oleh API - untuk contoh ini saya tetapkan num Ke 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
	}
 )


Langkah 4: Ekstrak titik data tertentu dari respons JSON

Titik akhir memberikan banyak detail tentang produk. Namun, dalam kasus kami, kami hanya ingin mengambil judul produk, ID produk, harga, URL produk, dan URL thumbnail.

Untungnya, titik akhir mengembalikan semua informasi ini dalam respons JSON dengan pasangan nilai kunci yang dapat diprediksi.

Kita dapat menggunakan pasangan nilai kunci ini untuk mengekstrak titik data tertentu dari respons:

	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)

Setelah akses shopping_resultsyang berisi hasil organik untuk kueri tertentu, kami menelusuri hasilnya dan mendapatkan hasilnya title Nilai kunci yang merupakan nama produk.

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

Kemudian kita melakukan hal yang sama untuk elemen lainnya:

	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')

Langkah 5: Ekspor hasil Google Belanja

Simpan data yang diekstrak ke file JSON

Sebelum saya menunjukkan cara mengirim data ke file CSV, ada cara cepat untuk mengekspor semua data ini dengan mudah dari terminal dengan menyimpannya ke file JSON.

	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)

Dalam skenario ini, kita tidak perlu berbuat banyak karena responsnya sudah berupa data JSON. Yang harus kita lakukan hanyalah import JSON ke dalam proyek kami dan kemudian dump() data ke dalam sebuah file.

Simpan data yang diekstraksi ke file CSV

Untuk mengekspor data JSON kami sebagai file CSV, buat daftar kosong sebelumnya payload.

Kemudian, karena kita sudah memiliki logika untuk memilih titik data tertentu dari respons JSON, kita menambahkan informasi produk yang diekstraksi ke daftar kosong ini menggunakan append() Metode.

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

Cuplikan ini masuk ke dalam dirinya for Pita. Dengan cara ini, setelah setiap iterasi, skrip Anda menambahkan setiap detail produk sebagai satu elemen.

Untuk mencobanya, mari kita cetak products dan lihat apa yang dikembalikannya.

	{
		"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

Kiat profesional

Anda dapat menyederhanakan kode Anda dengan menambahkan informasi saat melakukan scraping:

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

Sekarang kita tahu itu berfungsi dan datanya ada di dalam diri kita products Daftar, saatnya membuat DataFrame menggunakan Pandas dan menyimpan informasinya sebagai file CSV.

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

Di folder Anda, Anda akan menemukan file CSV yang disimpan:

Ekspor hasil dari CSV Google ShoppingEkspor hasil dari CSV Google Shopping

catatan: Ingat indeks dimulai dari 0, jadi 99 adalah hasil terakhir.

Selamat, Anda baru saja menghapus hasil pencarian Google Shopping!

Menghapus beberapa istilah pencarian Google Shopping

Untuk sebagian besar proyek, Anda ingin melacak beberapa istilah pencarian. Untuk melakukan ini, kami akan mengoptimalkan sedikit kode yang telah kami tulis.

Pertama, mari tambahkan daftar istilah yang akan kita bahas.

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

Selanjutnya kita membuat yang baru for Ulangi dan pindahkan semua kode kita dengan menambahkan variabel ke payload.

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

Sejak saat itu kodenya tetap sama. Namun, kami tidak ingin semua hasil tercampur. Jadi, alih-alih memasukkan semuanya ke dalam file yang sama, kami memerintahkan skrip kami untuk membuat file baru untuk setiap kata kunci:

  • Pindahkan daftar kosong ke daftar yang lebih besar for Loop – Anda dapat menambahkannya sebelumnya payload
  • Kami kemudian menggunakan variabel kata kunci untuk membuat nama file secara dinamis
	products = ()
	#HERE'S THE REST OF THE CODE
 
 
	df = pd.DataFrame(products)
	df.to_csv(f'{keyword}.csv')

Untuk setiap istilah pencarian di keywords daftar, scraper kami membuat yang baru products Daftar kosong, ekstrak 100 hasil produk teratas dan tambahkan semua data ini productslalu ekspor daftarnya ke file CSV.

Ekspor file CVS dari hasil belanja Google Ekspor file CVS dari hasil belanja Google

Tambahkan istilah pencarian sebanyak yang Anda perlukan keywords variabel untuk menskalakan proyek ini dan ScraperAPI akan melakukan sisanya.

Pos terkait

Tinggalkan Komentar