Beranda BlogPengikisan web Cara mencari Google Shopping dengan Python meskipun Anda seorang pemula

Cara mencari Google Shopping dengan Python meskipun Anda seorang pemula

oleh Kadek

Bayangkan sebuah pusat perbelanjaan besar dengan produk-produk dari seluruh dunia, memamerkan penawaran yang tak terhitung jumlahnya mulai dari gadget terbaru hingga item fashion. Beginilah cara Anda mendeskripsikan Google Shopping.

Scraping memungkinkan Anda mengekstrak, menganalisis, dan memanfaatkan informasi dalam daftar produk apa pun dan mendapatkan wawasan untuk membuat keputusan bisnis yang lebih cerdas, menerapkan strategi pemasaran inovatif, dan memberdayakan konsumen.

Dalam artikel ini, kita akan melihat manfaat melakukan scraping dengan Google Shopping dan alat yang dapat Anda gunakan untuk melakukan scraping data yang Anda perlukan.

Membaca data dari Google Shopping mungkin diperlukan karena berbagai alasan, mulai dari menganalisis pasar perusahaan hingga memperluas kemampuannya. Data ini memungkinkan Anda melacak tren pasar dengan cepat dan mempelajari lebih lanjut tentang tindakan pesaing. Mengikis informasi produk Google juga dapat berguna untuk riset pasar atau pemantauan harga.

Dengan Google Shopping Scraping, Anda dapat melacak dan menganalisis harga konsumen serta mengembangkan strategi pemasaran baru berdasarkan data. Dengan cara ini, Anda tidak hanya meningkatkan harga tetapi juga mengidentifikasi tren secara tepat waktu.

Memahami situs Google Belanja

Untuk mengekstrak data dari Google Shopping, kita perlu meneliti situs tersebut dan mencari tahu elemen apa yang perlu kita cari. Untuk melakukan ini, teliti struktur HTML halaman yang diinginkan dan lengkapi pemilih CSS yang diperlukan.

Mari kita mulai dengan halaman Google Shopping lalu masuk ke halaman produk untuk memeriksa data yang tersedia. Perhatikan halaman ini:


halaman Google Belanja

Hal pertama yang harus Anda lihat adalah tautannya. Berkat strukturnya, dimungkinkan untuk menulis tautan langsung di kueri. Yang harus Anda lakukan hanyalah mengganti kata kuncinya. Google mendukung beberapa parameter yang dapat melewati tautan, tetapi hanya dua yang diperlukan: kata kunci dan parameter toko, yang menunjukkan bahwa kita sedang mencari data di bagian Belanja.

Selanjutnya, buka DevTools (F12 atau klik kanan halaman dan pilih “Inspeksi”) dan jelajahi halaman tersebut. Dalam hal ini kita dapat melihat bahwa semua produk memiliki kelas “sh-dgr__content”. Kita bisa mendapatkan data tentang produk apa pun dengan mengaksesnya menggunakan pemilih CSS. Gunakan contoh produk untuk melihat di tag mana informasi tersebut berada.


Riset situs Google Belanja

Data yang paling mudah diekstraksi adalah gambar (parameter src tag img), judul (tag h3), dan link halaman produk (tag, parameter href). Setelah halaman di-refresh, data yang tersisa akan memiliki tag div dan kelas yang dibuat secara otomatis dengan nama berbeda. Kita dapat mengekstrak data lainnya menggunakan pemilih CSS untuk elemen anak atau elemen tetangga.

Sekarang buka halaman produk dan jelajahi dengan cara yang sama seperti halaman sebelumnya.


Halaman produk

Di halaman ini kita bisa mendapatkan informasi lebih detail mengenai produk:

  1. Nama Produk.
  2. Peringkat dan jumlah ulasan.
  3. Harga di toko yang berbeda.
  4. Keterangan.
  5. Detail produk tambahan (dalam kasus kami, genre, ISBN, penulis, dan nomor halaman).
  6. Ulasan.
  7. Produk sejenis.

Biasanya, halaman Google Shopping cukup untuk mengambil informasi produk. Namun, jika Anda ingin mengetahui segala sesuatu tentang suatu produk, Anda bisa mendapatkan informasi tersebut di halaman produk.

Dapatkan data dengan Scrape-It.Cloud Request Builder

Sebelum kita mengekstrak data dengan Python menggunakan API atau pustaka, mari tunjukkan cara cepat dan mudah mendapatkan JSON dengan data yang diperlukan hanya dalam beberapa klik.

Masuk ke scrape-it.cloud dan buka bagian Google SERP API. Saat Anda mendaftar, Anda akan menerima 1000 kredit gratis sehingga Anda dapat mencoba alat ini dan memutuskan apakah alat tersebut tepat untuk Anda.

Halaman Google SERP API memiliki pengaturan yang dapat membantu Anda membuat kueri Anda lebih tepat. Ada juga penampil kode di sini yang memungkinkan Anda menyalin kode untuk mengeksekusi kueri yang dihasilkan dalam bahasa pemrograman populer mana pun.

Coba buat kueri pertama Anda. Untuk melakukan ini, sesuaikan lokasi dan lokalisasi.


API SERP Google

Kemudian pilih jenis kueri Anda, Google Shopping, untuk mengumpulkan data dari sana. Anda juga dapat mengumpulkan data dari Gambar Google, Berita, SERP (Hasil Halaman Mesin Pencari), Video, dan Lokal. Sesuaikan pengaturan tambahan sesuai kebutuhan. Mereka memiliki nama yang intuitif, sehingga Anda dapat menyesuaikannya sendiri jika perlu. Jika Anda memiliki pertanyaan tentang parameter, kami menjelaskannya di halaman dokumentasi.

Ketika semua parameter terisi, masukkan kata kunci dan klik tombol “Cari”.


Pilih jenis pencarian

Hasilnya adalah respons JSON yang bisa Anda gunakan, konversikan ke format yang mudah digunakan, atau impor ke Excel.


Dapatkan respons JSON

Dengan cara ini, Anda mendapatkan data produk yang Anda perlukan tanpa menulis satu baris kode pun, dan dalam waktu singkat.

Sekarang mari kita gunakan Google Shopping API scrape-it.cloud, transfer data yang diperlukan ke skrip Python dan kemudian simpan dalam format *.xlsx.

Dapatkan kunci API Anda

Untuk melakukan ini, kembali ke scrape-it.cloud dan buka tab “Dasbor” di akun Anda.


Salin kunci API

Anda juga dapat melihat statistik penggunaan kredit Anda, daftar scraper tanpa kode yang baru-baru ini digunakan, dan saldo pinjaman Anda.

Gunakan API di skrip Anda

Buat file baru dengan ekstensi *.py. Kami akan menggunakan perpustakaan permintaan untuk menjalankan permintaan dari API dan perpustakaan Pandas dan menyimpannya dalam format file *.xlsx atau *.csv. Untuk menginstalnya, jalankan perintah berikut di Command Prompt:

pip install requests
pip install pandas

Kemudian impor perpustakaan ini ke file Anda:

import requests
import pandas as pd

Tentukan variabel yang ingin Anda gunakan. Hal ini diperlukan jika Anda ingin mengumpulkan data menggunakan skrip yang sama, misalnya untuk beberapa kata kunci.

keyword = 'Books'
api_url="https://api.scrape-it.cloud/scrape/google"

Sekarang atur header dengan kunci API Anda dan bentuk isi permintaan. Anda dapat menggunakan parameter Google Belanja ini:

kategori

parameter

Keterangan

Contoh

permintaan pencarian

Q

Diperlukan. Kueri yang ingin Anda cari.

q=kopi

Letak geografis

Lokasi

Opsional. Lokasi Google kanonik.

Lokasi=New York, AS

uule

Opsional. Lokasi terenkripsi untuk pencarian.

uule=BeberapaLokasi yang Dikodekan

Lokalisasi

google_domain

Opsional. Domain Google untuk digunakan.

google_domain=google.co.uk

jam

Opsional. Negara untuk pencarian.

gl=kita

jam

Opsional. Bahasa untuk pencarian.

h=id

lr

Opsional. Batasi pencarian pada bahasa tertentu.

lr=lang_fr

Parameter Google tingkat lanjut

ludocid

Opsional. ID Cantuman Google Bisnisku.

ludocid=BeberapaID

larut

Opsional. ID tampilan kartu grafik pengetahuan.

lsig=BeberapaID

kgmid

Opsional. ID entri Grafik Pengetahuan Google

kgmid=BeberapaID

ya

Opsional. ID parameter pencarian yang di-cache.

si=BeberapaID

Filter tingkat lanjut

tbs

Opsional. Parameter pencarian lanjutan.

tbs=BeberapaParameter

aman

Opsional. Tingkat filter untuk konten dewasa

aman=aktif

nfpr

Opsional. Kecualikan hasil koreksi otomatis.

nfpr=1

Saring

Opsional. Aktifkan/nonaktifkan filter.

penyaring=0

Jenis pencarian

tbm

Opsional. Jenis pencarian.

tbm=toko

Penomoran halaman

mulai

Opsional. Pengimbangan hasil.

Mulai=10

Nomor

Opsional. Jumlah hasil maksimal.

Angka=20

Anda dapat menentukan lebih banyak parameter jika perlu, kami hanya menggunakan beberapa:

headers = {'x-api-key': 'PUT-YOUR-API-KEY'}

params = {
    'q': keyword,
    'domain': 'google.com',
    'tbm': 'shop'
}

Sekarang jalankan kueri dengan mengumpulkan semua data bersama-sama. Untuk menghindari gangguan skrip karena kesalahan, gunakan blok try..exclusive:

try:
    response = requests.get(api_url, params=params, headers=headers)
    if response.status_code == 200:
            # Here will be your Code
except Exception as e:
    print('Error:', e)

Dalam kondisi di atas, mari kita ekstrak data yang diperlukan dalam format JSON. Jika Anda melihat tangkapan layar respons JSON pada contoh sebelumnya, API mengembalikan data yang diperlukan dalam parameter shoppingResults.

        data = response.json()
        shopping = data('shoppingResults')

Terakhir, kami menggunakan panda untuk menyimpan data dalam bentuk yang diinginkan.

        df = pd.DataFrame(shopping)
        df.to_excel("shopping_result.xlsx", index=False)

Hasilnya, kami mendapatkan file ini yang secara otomatis membuat judul kolom dan menyimpan data. Meskipun konten shoppingResults berubah di masa mendatang, kami akan tetap menerima data dengan header di parameter JSON. Di sini kita mendapatkan posisi produk, judul, link, rating, review dan informasi produk lainnya.


Tabel yang dihasilkan

Kode lengkap:

import requests
import pandas as pd

keyword = 'Books'
api_url="https://api.scrape-it.cloud/scrape/google"
headers = {'x-api-key': 'YOUR-API-KEY'}

params = {
    'q': keyword,
    'domain': 'google.com',
    'tbm': 'shop'
}

try:
    response = requests.get(api_url, params=params, headers=headers)
    if response.status_code == 200:
        data = response.json()
        shopping = data('shoppingResults')
        df = pd.DataFrame(shopping)
        df.to_excel("shopping_result.xlsx", index=False)
except Exception as e:
    print('Error:', e)

Jika Anda tidak ingin menggunakan panda, Anda dapat membuat file, memberi nama kolom, dan menyimpan data baris demi baris.

Menggunakan API sangat menyederhanakan proses pengikisan karena bagian tersulit dilakukan di sisi sumber daya yang menyediakan API. Ini memecahkan masalah dengan rendering JS, melewati kunci dan captcha, dan banyak lagi. Data yang terstruktur dengan baik dikembalikan ke pengguna dalam format yang nyaman.

Menggunakan API untuk mengikis data mungkin tampak mahal, namun dapat menghemat waktu dan uang Anda dalam jangka panjang. Membuat scraper khusus pada awalnya mungkin tampak menghemat biaya, namun mengelola rotasi proxy, penguraian HTML, dan ekstraksi yang konsisten bisa jadi sulit. Selain itu, tantangan tambahan seperti captcha dan pemblokiran dapat menghabiskan terlalu banyak sumber daya, sehingga meniadakan penghematan biaya awal dalam menggunakan scraper Anda sendiri. Dalam kasus ini, menggunakan layanan pengikisan khusus sering kali lebih efisien dan tidak memakan banyak waktu secara keseluruhan.

Mari buat pengikis data Google Belanja dengan Python menggunakan perpustakaan BeautifulSoup atau Selenium.

Gosok Google Shopping dengan BeautifulSoup dengan Python

Dalam contoh ini, kami menggunakan perpustakaan BeautifulSoup untuk mengurai halaman. Ini cukup sederhana dan cocok bahkan untuk pemula. Namun, ia tidak memiliki fitur seperti browser tanpa kepala atau simulasi perilaku pengguna, seperti menavigasi ke halaman baru atau mengisi kolom.

Pertama, instal perpustakaan BeautifulSoup. Selain itu, kami akan menggunakan perpustakaan Permintaan yang diinstal sebelumnya untuk menjalankan kueri.

pip install bs4

Sekarang buat file baru dengan ekstensi *.py dan rusak perpustakaan di dalamnya:

from bs4 import BeautifulSoup
import requests

Sisipkan tautan di laman Google Belanja Anda:

url="https://www.google.com/search?q=books&tbm=shop"

Anda dapat menggunakan variabel untuk membuat tautan yang Anda perlukan. Dalam hal ini, Anda perlu menentukan file kata kunci atau memasukkannya ke dalam variabel dan kemudian menelusuri semua kata kunci satu per satu.

Sekarang tentukan header untuk mengurangi risiko pemblokiran. Yang terbaik adalah membuka browser Anda sendiri dan menggunakan agen pengguna Anda.

headers = {
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
    'Accept-Language': 'en-US,en;q=0.5' 
}

Sekarang yang harus Anda lakukan adalah menjalankan query dan memproses data yang dihasilkan. Untuk mendapatkan kode HTML halaman, kami menggunakan permintaan Dapatkan:

response = requests.get(url, headers=headers)

Sekarang jika permintaan berhasil, kita membuat objek BeautifulSoup dan mengurai halaman:

if response.status_code == 200:
    html_content = response.text

    soup = BeautifulSoup(html_content, 'html.parser')

Untuk menelusuri semua elemen satu per satu, pertama-tama kita mencari semuanya.

    content_elements = soup.find_all('div', class_='sh-dgr__content')

Sekarang kita gunakan for untuk menelusuri semua elemen yang ditemukan:

    for content_element in content_elements:

Mari kita tentukan dalam loop pemilih CSS dari elemen yang perlu kita temukan untuk setiap produk. Mari kita mulai dengan tautan ke produk:

        link = content_element.find('a')('href')
        print("Link:", link)

Sekarang mari kita ambil semua header dan menampilkannya juga di layar:

        title = content_element.find('h3').get_text()
        print("Title:", title)

Sekarang kita mendapatkan ulasannya. Namun, karena kita tidak dapat menggunakan nama kelas, kita menggunakan nomor atom unsur yang diperlukan:

        rating_element = content_element.find_all('span')(1)
        rating = rating_element.get_text()
        print("Rating:", rating)

Akhirnya kami mendapatkan deskripsi produk. Ini adalah rentang berikutnya setelah penilaian. Berarti itu saudaranya.

description_element = rating_element.find_next_sibling('span')
        description = description_element.get_text()
        print("Description:", description)

Jika Anda ingin mempelajari lebih lanjut tentang penyeleksi CSS, Anda dapat menggunakan lembar contekan kami dan mempelajari sesuatu yang baru tentang cara menggunakannya.

Kode lengkap:

from bs4 import BeautifulSoup
import requests

url="https://www.google.com/search?q=books&tbm=shop"

headers = {
    'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1',
    'Accept-Language': 'en-US,en;q=0.5' 
}

response = requests.get(url, headers=headers)

if response.status_code == 200:
    html_content = response.text

    soup = BeautifulSoup(html_content, 'html.parser')

    content_elements = soup.find_all('div', class_='sh-dgr__content')

    for content_element in content_elements:
        link = content_element.find('a')('href')
        print("Link:", link)

        title = content_element.find('h3').get_text()
        print("Title:", title)

        rating_element = content_element.find_all('span')(1)
        rating = rating_element.get_text()
        print("Rating:", rating)

        description_element = rating_element.find_next_sibling('span')
        description = description_element.get_text()
        print("Description:", description)

        print("\n")

Jika Anda tidak puas dengan kemampuan mengeluarkan data ke konsol, Anda dapat menggunakan Pandas atau alat lain untuk menyimpan data dalam format yang Anda perlukan.

Kikis hasil Google Belanja dengan Selenium

Alat terakhir dalam artikel ini adalah perpustakaan Selenium. Ada analog di hampir semua bahasa pemrograman. Selain itu, ia memiliki komunitas yang sangat aktif dan dokumentasi yang luas. Selenium menggunakan driver web untuk mensimulasikan perilaku pengguna dan mengontrol browser tanpa kepala.

Sebelumnya kami telah menulis tentang cara menginstal Selenium dan apa lagi yang perlu Anda gunakan. Kami juga telah memberikan contoh scraping dengan Python dengan Selenium: “Web Scraping dengan Selenium Python”.

Untuk menjalankan skrip berikut kita memerlukan webdriver. Kami akan menggunakan Chrome. Penting untuk memastikan bahwa versi driver web cocok dengan versi browser yang diinstal.

Sekarang kita membuat file *.py baru dan mengimpor paket yang diperlukan:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

Sekarang tentukan jalur ke driver web yang diunduh sebelumnya dan tautan ke halaman Google Belanja:

chromedriver_path="C://chromedriver.exe"
url="https://www.google.com/search?q=books&tbm=shop"

Buat pengendali webdriver:

service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service)

Terakhir, kita dapat meluncurkan browser web dan menavigasi ke halaman target.

driver.get(url)

Lakukan analisis halaman menggunakan modul By dan berbagai elemennya. Kami akan menggunakan tag yang sama seperti sebelumnya, namun menggunakan fitur lain dari modul untuk mengumpulkan data:

content_elements = driver.find_elements(By.CLASS_NAME, 'sh-dgr__content')

for content_element in content_elements:
    link_element = content_element.find_element(By.TAG_NAME, 'a')
    link = link_element.get_attribute('href')
    print("Link:", link)

    title_element = content_element.find_element(By.TAG_NAME, 'h3')
    title = title_element.text
    print("Title:", title)

    rating_element = content_element.find_elements(By.TAG_NAME, 'span')(1)
    rating = rating_element.text
    print("Rating:", rating)

    description_element = rating_element.find_element(By.XPATH, './following-sibling::span')
    description = description_element.text
    print("Description:", description)

    print("\n")

Terakhir, tutup webdriver untuk menyelesaikan eksekusi skrip.

driver.quit()

Kode lengkap:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By

chromedriver_path="C://chromedriver.exe"
url="https://www.google.com/search?q=books&tbm=shop"

service = Service(chromedriver_path)
driver = webdriver.Chrome(service=service)

driver.get(url)

content_elements = driver.find_elements(By.CLASS_NAME, 'sh-dgr__content')

for content_element in content_elements:
    link_element = content_element.find_element(By.TAG_NAME, 'a')
    link = link_element.get_attribute('href')
    print("Link:", link)

    title_element = content_element.find_element(By.TAG_NAME, 'h3')
    title = title_element.text
    print("Title:", title)

    rating_element = content_element.find_elements(By.TAG_NAME, 'span')(1)
    rating = rating_element.text
    print("Rating:", rating)

    description_element = rating_element.find_element(By.XPATH, './following-sibling::span')
    description = description_element.text
    print("Description:", description)

    print("\n")

driver.quit()

Seperti yang Anda lihat, menggunakan Selenium untuk mengikis halaman Google Belanja itu mudah. Pada saat yang sama, Selenium memungkinkan Anda meniru perilaku pengguna sebenarnya, mengontrol berbagai elemen pada halaman, dan memuat JavaScript.

Kesimpulan dan temuan

Dalam tutorial ini, kita melihat beberapa cara untuk mengikis hasil pencarian Google Shopping, baik yang memerlukan pengetahuan pengkodean dan juga tidak. Jika Anda merasa nyaman dengan pemrograman tetapi belum siap menganalisis struktur situs web yang rumit atau mengembangkan cara untuk melindungi terhadap captcha atau pemblokiran, menggunakan Google Shopping API mungkin lebih cocok.

Pos terkait

Tinggalkan Komentar