
Buat Web Scraper dengan Python: Tutorial untuk Pemula
Tutorial ini mengajarkan Anda cara membuat web scraper dari awal menggunakan Python. Anda akan belajar cara menginstal pustaka yang diperlukan (Requests dan BeautifulSoup), mengirim permintaan HTTP ke halaman web, mem-parsing konten HTML, mengekstrak data spesifik (seperti judul dan harga produk), dan menyimpan data tersebut ke dalam file CSV yang bersih untuk dianalisis.
Di dunia e-commerce dan pemasaran digital, mengetahui apa yang dilakukan pesaing Anda adalah kunci. Berapa harga produk mereka? Produk baru apa yang mereka luncurkan? Memeriksa situs web mereka secara manual setiap hari adalah pekerjaan yang tidak efisien. Di sinilah web scraping berperan.
Web scraping (atau web harvesting) adalah proses mengekstraksi data dari situs web secara otomatis. Dengan menulis skrip sederhana, Anda dapat membuat “robot” yang mengunjungi halaman web, mengambil informasi yang Anda butuhkan (seperti nama produk, harga, ulasan), dan menyimpannya dalam format terstruktur seperti spreadsheet. Ini adalah keterampilan yang sangat kuat untuk intelijen kompetitif, pemantauan harga, dan pengumpulan data.
Catatan Etika: Penting untuk melakukan scraping secara bertanggung jawab. Selalu periksa file robots.txt situs web (misalnya, www.example.com/robots.txt) untuk melihat halaman mana yang tidak boleh diakses oleh bot. Jangan membanjiri server dengan terlalu banyak permintaan dalam waktu singkat.
Berikut 5 Langkah untuk Buat Web Scraper dengan Python
Panduan ini akan memandu Anda membuat scraper sederhana untuk mengambil nama dan harga produk dari halaman kategori e-commerce fiktif.
Prasyarat: Menyiapkan Lingkungan Python Anda
Anda memerlukan Python yang terinstal di komputer Anda. Anda dapat memeriksanya dengan membuka Terminal (macOS/Linux) atau Command Prompt (Windows) dan mengetik python --version.
Selanjutnya, kita perlu menginstal dua pustaka Python yang luar biasa:
- Requests: Untuk mengirim permintaan HTTP ke situs web dan mendapatkan konten HTML-nya.
- BeautifulSoup4: Untuk mem-parsing HTML dan mengekstrak data dengan mudah.
Instal keduanya dengan satu perintah di terminal Anda:
pip install requests beautifulsoup4Langkah 1: Memeriksa Situs Web Target
Sebelum menulis kode, kita perlu menjadi detektif. Buka halaman web yang ingin Anda scrape di browser Anda (misalnya, Chrome).
- Arahkan kursor ke salah satu nama produk, klik kanan, dan pilih Inspect.
- Ini akan membuka Developer Tools, menyoroti elemen HTML untuk nama produk tersebut. Perhatikan tag dan kelasnya. Misalnya, Anda mungkin melihat sesuatu seperti
<h2 class="product-title">Nama Produk</h2>. Catat ini: tag-nya adalahh2dan kelasnya adalahproduct-title. - Lakukan hal yang sama untuk harga. Anda mungkin menemukan sesuatu seperti
<span class="price">$19.99</span>. Catat: tag-nya adalahspandan kelasnya adalahprice.
Informasi ini sangat penting untuk memberitahu skrip kita data apa yang harus dicari.
Langkah 2: Membuat Permintaan HTTP dengan requests
Buat file Python baru (misalnya, scraper.py) dan tulis kode berikut:
import requests
URL = "http://example-ecommerce-site.com/products" # Ganti dengan URL target Anda
headers = {"User-Agent": "My Web Scraper 1.0"} # Beberapa situs memblokir permintaan tanpa User-Agent
response = requests.get(URL, headers=headers)
# Memeriksa apakah permintaan berhasil (status code 200)
print(response.status_code)
print(response.text[:500]) # Mencetak 500 karakter pertama dari HTMLSimpan dan jalankan file ini dari terminal (python scraper.py). Jika Anda melihat 200 dan potongan HTML, berarti Anda telah berhasil mengunduh halaman web tersebut.
Langkah 3: Mem-parsing HTML dengan BeautifulSoup
Sekarang kita memiliki HTML sebagai teks, kita perlu mengubahnya menjadi objek yang dapat kita navigasikan. Tambahkan kode berikut ke skrip Anda:
from bs4 import BeautifulSoup
#... (kode dari langkah 2)...
soup = BeautifulSoup(response.content, "html.parser")Baris ini mengambil konten HTML dari respons dan membuat objek BeautifulSoup, yang merupakan representasi terstruktur dari dokumen HTML.
Langkah 4: Mengekstrak Data
Inilah saatnya menggunakan informasi yang kita kumpulkan di Langkah 1. Kita akan menggunakan metode find_all() dari BeautifulSoup untuk menemukan semua elemen yang cocok dengan tag dan kelas yang kita identifikasi.
#... (kode sebelumnya)...
# Temukan semua elemen dengan tag h2 dan kelas product-title
titles = soup.find_all("h2", class_="product-title")
# Temukan semua elemen dengan tag span dan kelas price
prices = soup.find_all("span", class_="price")
# Loop melalui hasil dan cetak teks yang bersih
for title in titles:
print(title.get_text(strip=True))
for price in prices:
print(price.get_text(strip=True))Metode get_text(strip=True) mengekstrak hanya teks dari elemen HTML dan menghapus spasi putih yang tidak perlu di awal dan akhir.
Langkah 5: Menyusun dan Menyimpan Data ke CSV
Mencetak data ke layar itu bagus, tetapi menyimpannya ke file CSV jauh lebih berguna. Kita akan menggunakan modul csv bawaan Python.
import csv
#... (kode sebelumnya untuk mendapatkan titles dan prices)...
# Buka (atau buat) file CSV untuk ditulis
with open('products.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
# Tulis baris header
writer.writerow()
# Loop melalui data yang diekstrak dan tulis ke file
# zip() menggabungkan dua daftar menjadi pasangan
for title, price in zip(titles, prices):
title_text = title.get_text(strip=True)
price_text = price.get_text(strip=True)
writer.writerow([title_text, price_text])
print("Scraping selesai. Data disimpan di products.csv")Skrip Lengkap dan Cara Menjalankannya
Berikut adalah skrip lengkap yang menggabungkan semua langkah:
import requests
from bs4 import BeautifulSoup
import csv
def scrape_products(url):
headers = {"User-Agent": "My Web Scraper 1.0"}
response = requests.get(url, headers=headers)
if response.status_code!= 200:
print(f"Gagal mengambil halaman. Status code: {response.status_code}")
return
soup = BeautifulSoup(response.content, "html.parser")
titles = soup.find_all("h2", class_="product-title")
prices = soup.find_all("span", class_="price")
with open('products.csv', 'w', newline='', encoding='utf-8') as csvfile:
writer = csv.writer(csvfile)
writer.writerow()
for title, price in zip(titles, prices):
title_text = title.get_text(strip=True)
price_text = price.get_text(strip=True)
writer.writerow([title_text, price_text])
print("Scraping selesai. Data disimpan di products.csv")
# Ganti dengan URL target Anda
TARGET_URL = "http://example-ecommerce-site.com/products"
scrape_products(TARGET_URL)Untuk menjalankannya:
- Simpan kode di atas sebagai
scraper.py. - Buka terminal Anda, navigasikan ke direktori tempat Anda menyimpan file.
- Jalankan perintah:
python scraper.py.
Jika semuanya berjalan dengan baik, Anda akan melihat pesan sukses dan file baru bernama products.csv akan muncul di direktori Anda, berisi data yang telah Anda scrape.
Kesimpulan: Melepaskan Robot Pengumpul Data Anda
Selamat! Anda telah berhasil membuat web scraper fungsional pertama Anda. Anda telah belajar cara mengirim permintaan web, mem-parsing HTML, menemukan dan mengekstrak data spesifik, dan menyimpannya dalam format yang berguna.
Ini adalah keterampilan dasar yang membuka banyak kemungkinan. Anda dapat mengembangkannya untuk scrape beberapa halaman (paginasi), menangani situs web yang lebih kompleks yang menggunakan JavaScript (dengan alat seperti Selenium ), atau bahkan menjadwalkan skrip Anda untuk berjalan secara otomatis setiap hari untuk memantau perubahan. Kekuatan untuk mengotomatiskan pengumpulan data kini ada di tangan Anda.