Daftar Isi
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.
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.
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 us Permintaan 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 milikmupayload
sebagaiparams
.
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_results
yang 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:
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 sebelumnyapayload
- 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 products
lalu ekspor daftarnya ke file CSV.
Tambahkan istilah pencarian sebanyak yang Anda perlukan keywords
variabel untuk menskalakan proyek ini dan ScraperAPI akan melakukan sisanya.