In this Article
Baik Anda mengerjakan ide sendiri maupun proyek perusahaan, data adalah elemen yang Anda butuhkan. Saat memulai proyek baru atau mengembangkan strategi untuk bisnis yang sudah ada, Anda perlu menganalisis data dalam jumlah besar. Analisis ini membantu merumuskan solusi dengan berbagai cara berdasarkan kumpulan data dan pernyataan masalah. Di sinilah web scraping berperan.
Fokus yang semakin besar pada analisis perilaku pelanggan mendorong lebih banyak bisnis ritel menggunakan teknik web scraping, khususnya ekstraksi data. Salah satu kegiatan penting yang harus diterapkan setiap perusahaan adalah memantau harga pesaing, ketersediaan produk, dan ulasan pelanggan.
Dalam tutorial ini, kami akan menunjukkan cara memulai web scraping dengan Python untuk analisis data produk Amazon yang lebih baik.
Persiapan Awal: Apa yang Perlu Diunduh?
Sebelum mulai melakukan web scraping halaman Amazon menggunakan Python, mari pastikan environment Anda sudah disiapkan dengan benar. Jika Python 3.x belum terinstal di komputer Anda, Anda dapat mengunduhnya dari https://www.python.org/.
- Visual Studio Code (VS Code)
Untuk menjalankan semua perintah yang diperlukan, Anda dapat menggunakan terminal di Visual Studio Code (VS Code). Cukup unduh VS Code dari situs web resmi dan ikuti petunjuk instalasi untuk sistem operasi Anda.
Untuk menyiapkan environment Python Anda:
- Buka VS Code dan instal ekstensi Python dengan mengeklik ikon kotak di sidebar.
Jika Python belum terinstal, Anda akan melihat not found: python. Jika semuanya berfungsi, Anda akan melihat versi saat ini seperti yang ditunjukkan di bawah ini.
Buat Folder Proyek Baru:
- Di VS Code, buka folder tempat Anda ingin membuat proyek dengan memilih File – Open Folder. Buat file Python baru untuk script Anda, misalnya, amazon_scraper.py
Instal dua library pihak ketiga untuk Python
Untuk langkah ini, kita perlu menginstal pip. Pip, yang juga dikenal sebagai pip3, adalah sistem manajemen paket untuk Python yang digunakan untuk menginstal dan mengelola paket perangkat lunak.
- Setelah terminal terbuka, Anda dapat menginstal library yang diperlukan menggunakan pip, yaitu penginstal paket untuk Python. Jadi, periksa apakah Anda sudah memiliki pip yang telah terinstal:
*Untuk menginstal pip Anda dapat menggunakan Ensurepip, ketik salah satu perintah berikut di Terminal:
python -m ensurepip
python3 -m ensurepip
- Sekarang, gunakan pip untuk menginstal library yang diperlukan. Kita memerlukan “requests”, “beautifulsoup4”, “pandas”, “lxml” dan “html5lib”.
pip3 install requests
pip3 install beautifulsoup4
pip3 install pandas
pip3 install lxml
pip3 install html5lib
Mengapa kita memerlukan Library Ini?
-
- Requests: dengan library ini, kita dapat membuat koneksi HTTP ke halaman Amazon. Library ini akan membantu kita mengekstrak konten HTML mentah dari halaman target.
- Beautiful Soup: alat canggih ini membantu kita mengambil data yang diperlukan dari HTML mentah menggunakan library Requests.
- Pandas: digunakan untuk manipulasi dan analisis data. Anda dapat mengatur data hasil scraping ke dalam DataFrame agar analisis efisien dan mengekspornya ke berbagai format seperti CSV.
- lxml: library canggih untuk mengurai dokumen XML dan HTML dengan cepat.
- html5lib: library Python murni untuk mengurai HTML yang mengikuti spesifikasi HTML5.
Scraping elemen produk
Mari mulai proses utama. Dari semua informasi yang tersedia di situs web Amazon, kita akan berfokus melakukan scraping elemen berikut:
- Nama produk;
- Rating;
- Harga;
- Gambar;
- Deskripsi.
Untuk tutorial ini, kami memilih produk berikut: https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY
Mengirim request ke halaman produk
*Sebelum mengirim request, kita juga harus mengimpor library yang baru saja diinstal:
import requests
from bs4 import BeautifulSoup
import pandas as pd
Pada langkah ini, kita akan mengirim request HTTP ke URL halaman produk Amazon untuk mengambil konten HTML-nya. Dengan menggunakan Requests library, Anda dapat mensimulasikan request browser web untuk mengakses halaman web. Sertakan header yang sesuai, seperti User-Agent untuk meniru browser asli dan mencegah kegagalan koneksi. Respons server, yang berisi konten HTML halaman, kemudian disimpan untuk pemrosesan dan ekstraksi data selanjutnya.
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept-Language': 'en-US, en;q=0.5'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'lxml')
Nama Produk
- Lokasi
Setelah kita Periksa judul, kita akan menemukan bahwa teks judul berada di dalam h1 tag dengan id title. Mari kembali ke file kita dan tulis kode untuk mengekstrak informasi ini dari Amazon.
- Ekstrak Nama Produk
Kita akan mengekstrak nama produk dari konten HTML halaman produk Amazon. Dengan menggunakan BeautifulSoup library, kita mengurai konten HTML dan menemukan elemen berisi nama produk menggunakan tag HTML serta atributnya. Setelah elemen ditemukan, kita mengekstrak konten teksnya, sering kali menggunakan metode seperti find() atau find_all() bersama selector CSS atau ekspresi XPath. Terakhir, nama produk yang diekstrak diformat sesuai kebutuhan sebelum langkah berikutnya.
*Dengan menggunakan atribut text, kita dapat mengekstrak informasi dari teks.
product_name_element = soup.find('span', {'id': 'productTitle'})
product_name = product_name_element.text.strip()
print('Product Name:', product_name)
Setelah menjalankan kode ini, kita akan memperoleh hasil berikut di Terminal:
Gambar Produk
- Lokasi
Untuk melakukan scraping gambar produk dari halaman produk Amazon, Anda perlu menemukan elemen HTML yang memuat URL gambar. Di halaman produk Amazon, gambar sering disimpan dalam tag ‘img’ tags. Salah satu class umum untuk gambar dinamis di Amazon adalah ‘a-dynamic-image’.
- Ekstrak Gambar Produk
Gunakan BeautifulSoup untuk mengurai konten HTML yang diambil dari request. Ekstrak atribut ‘src’ atribut dari setiap tag ‘img’ tag, yang berisi URL gambar.
image_tags = soup.find_all('img', {'class':'a-dynamic-image'})
product_images = [img['src'] for img in image_tags]
print('Product Images:', product_images)
*Terkadang setelah mengetik kode ini, mungkin ada masalah saat mendapatkan hasil yang diinginkan. Jika hasilnya menunjukkan 0 gambar, sebaiknya periksa struktur HTML dan pastikan Anda menemukan class serta atribut yang benar. Dalam kasus seperti ini, Anda dapat mencoba kode berikut:
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
image_tags = soup.find_all('img')
product_images = []
for img_tag in image_tags:
image_url = img_tag.get('src')
if image_url:
product_images.append(image_url)
print('Product Images:', product_images)
else:
print(f"Request failed with status code: {response.status_code}")
Ini akan mengembalikan semua gambar produk beresolusi tinggi dalam sebuah daftar.
* Halaman produk Amazon sering memuat beberapa gambar untuk satu produk. Ambil semua gambar yang relevan dengan memproses seluruh elemen dalam daftar.
Rating Produk
- Lokasi
Anda dapat menemukan rating pada ‘i tag’ dengan class ‘a-icon-alt’.
* Pastikan untuk menyesuaikan nama class dengan struktur HTML spesifik halaman produk Amazon yang sedang Anda scrape. Jika nama class berbeda, Anda perlu mengganti ‘a-icon-alt’ dengan nama class yang benar.
- Ekstrak Rating Produk
Untuk mengekstrak rating produk, Anda menemukan elemen HTML yang mewakili rating pada halaman produk Amazon melalui atribut ‘class’ atributnya, seperti ‘a-icon-alt. Setelah ditemukan, Anda mengambil konten teks elemen tersebut, yang mewakili nilai rating, lalu membersihkannya untuk pemrosesan lebih lanjut.
product_rating = soup.find('span', {'class': 'a-icon-alt'}).text.strip()
print('Product Rating:', product_rating)
Anda akan melihat hasil ini:
Harga Produk
- Lokasi
Untuk mengekstrak harga produk, kita akan mengidentifikasi elemen HTML yang menampilkan harga, khususnya elemen yang berada tepat di bawah rating. Pada halaman produk Amazon, harga ini biasanya berada di dalam tag ‘span’ tag dengan class ‘a-price’. Setelah menemukan tag ‘span’ tag ini, Anda dapat menuju tag ‘span’ tag pertamanya untuk mengambil nilai harga sebenarnya.
- Ekstrak Harga Produk
Dalam kode ini, variabel price container menyimpan elemen ‘span’ elemen dengan class ‘a-price’, dan harga mengambil teks dari tag ‘span’ tag dengan class ‘a-offscreen’, yang memuat harga.
product_price = soup.find('span', {'class': 'a-offscreen'}).text.strip()
print('Product Price:', product_price)
Hasilnya akan menjadi:
Deskripsi Produk
- Lokasi
Untuk melakukan scraping deskripsi produk dari halaman produk Amazon, Anda perlu menemukan elemen HTML yang memuat deskripsi. Deskripsi produk Amazon sering ditemukan di dalam tag ‘div’ atau ‘span’ tag tertentu dengan ‘id productDescription’. Jika tag ‘div’ tidak ditemukan, kode memeriksa ‘ul’‘ dengan class ‘a-unordered-list a-vertical a-spacing-mini’ ‘ untuk deskripsi berpoin.
*Detail deskripsi disimpan di dalam tag ‘tr’ tags dengan class ‘a-spacing-small’. Setelah menemukannya, Anda harus menemukan kedua tag ‘span’ di bawahnya untuk menemukan teks.
-
Ekstrak Deskripsi Produk
Dengan menjalankan script ini, Anda seharusnya dapat mengekstrak deskripsi produk dari bagian ‘feature-bullets’ section pada halaman produk Amazon. Ini adalah bagian umum yang memuat poin-poin yang menjelaskan fitur produk.
description_section = soup.find('div', {'id': 'feature-bullets'})
product_description = description_section.get_text(separator=' ').strip()
print('Product Description:', product_description)
Anda akan mendapatkan ini:
Setelah melakukan scraping semua informasi yang diperlukan, Anda dapat menyimpan data dalam dictionary. Kemudian, Anda dapat mengonversi dictionary ini menjadi pandas DataFrame agar manipulasi dan tampilan data lebih mudah.
product_info = {
'Name': product_name,
'Rating': product_rating,
'Price': product_price,
'Images': product_images,
'Description': product_description
}
df = pd.DataFrame([product_info])
print(df)
Kode Lengkap
Anda dapat dengan mudah memodifikasi kode untuk mengumpulkan lebih banyak data dari halaman produk Amazon, seperti ulasan pelanggan, detail produk, atau informasi penjual. Dengan memeriksa struktur HTML, Anda dapat menyesuaikan kode untuk mengekstrak elemen tambahan tersebut. Ini dapat berguna untuk penggunaan pribadi atau integrasi ke dalam aplikasi yang melacak harga Amazon, sehingga membantu pengguna menemukan penawaran terbaik.
Untuk saat ini, kode terlihat seperti ini. Dengan mengikuti tutorial langkah demi langkah ini, Anda dapat melihat cara kerja setiap bagian kode dan melakukan perubahan lanjutan sesuai kebutuhan spesifik Anda.
import requests
from bs4 import BeautifulSoup
import pandas as pd
url = 'https://www.amazon.com/Apple-2023-MacBook-512GB-Storage/dp/B0CB9BWMPY'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36',
'Accept-Language': 'en-US, en;q=0.5'
}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'lxml')
product_name_element = soup.find('span', {'id': 'productTitle'})
product_name = product_name_element.text.strip()
print('Product Name:', product_name)
if response.status_code == 200:
soup = BeautifulSoup(response.content, 'html.parser')
image_tags = soup.find_all('img')
product_images = []
for img_tag in image_tags:
image_url = img_tag.get('src')
if image_url:
product_images.append(image_url)
print('Product Images:', product_images)
else:
print(f"Request failed with status code: {response.status_code}")
product_rating = soup.find('span', {'class': 'a-icon-alt'}).text.strip()
print('Product Rating:', product_rating)
product_price = soup.find('span', {'class': 'a-offscreen'}).text.strip()
print('Product Price:', product_price)
image_tags = soup.find_all('img', {'class': 'a-dynamic-image'})
product_images = [img['src'] for img in image_tags]
print('Product Images:', product_images)
description_section = soup.find('div', {'id': 'feature-bullets'})
product_description = description_section.get_text(separator=' ').strip()
print('Product Description:', product_description)
product_info = {
'Name': product_name,
'Rating': product_rating,
'Price': product_price,
'Images': product_images,
'Description': product_description
}
df = pd.DataFrame([product_info])
print(df)
Format tabel ditampilkan di konsol atau terminal Python saat Anda menjalankan script. Setelah script dijalankan, DataFrame dicetak langsung ke terminal sehingga Anda dapat melihat data yang tersusun dalam baris dan kolom.
Tips untuk scrape halaman Amazon dengan Python:
- Patuhi Ketentuan Layanan Amazon;
- Urai HTML dengan saksama dan lakukan pemeriksaan keamanan;
- Perbarui kode Anda secara berkala karena struktur halaman Amazon dapat berubah;
- Gunakan header yang tepat, seperti ‘User-Agent’ dan ‘Accept-Language’;
- Gunakan proxy dan rotasi IP.
Coba DataImpulse untuk scraping Amazon
Saat menggunakan proxy, Anda mengirim request dari IP yang berbeda, seolah-olah berasal dari perangkat, lokasi, dan zona waktu yang berbeda. Situs tidak akan mencurigai Anda, meminta Anda memasukkan captcha, atau bahkan memblokir Anda. Bersama kami, Anda akan mendapatkan:
- Data terbaru;
- Rotasi IP, tanpa IP yang masuk daftar blokir;
- Penanganan masalah verifikasi;
- API intuitif yang cepat beradaptasi dengan perubahan struktur HTML Amazon;
- Infrastruktur andal, sempurna untuk proyek scraping besar;
- Dukungan manusia 24/7.
Hubungi kami di [email protected] atau klik tombol “Coba sekarang” di pojok kanan atas.
*Tutorial ini murni untuk tujuan edukasi dan berfungsi sebagai demonstrasi kemampuan teknis. Penting untuk dipahami bahwa scraping data dari Amazon menimbulkan kekhawatiran terkait ketentuan penggunaan dan legalitas. Scraping tanpa izin dapat menimbulkan konsekuensi serius, termasuk tindakan hukum dan penangguhan akun. Selalu bertindak dengan hati-hati dan ikuti panduan etis.



















