AI untuk Web Scraping Data Tanpa Ribet
TL;DR
AI untuk web scraping pakai model bahasa (LLM) buat baca HTML mentah dan langsung narik data terstruktur, tanpa kamu harus nulis selector CSS yang rinci. Alurnya: ambil halaman pakai Python, bersihin HTML-nya, lalu kirim ke LLM dengan instruksi field yang mau diambil. Cara ini lebih tahan sama perubahan layout situs dibanding scraping klasik, tapi kamu tetap wajib cek robots.txt dan hasil ekstraksinya.
Scraping klasik itu rapuh. Situs ganti layout dikit, selector-mu langsung rusak.
Kamu habis waktu ngoprek kode div.class-a > span.class-b yang berubah tiap update. Melelahkan dan gampang error.
AI ngambil jalan beda. Kamu kasih HTML mentah, model bahasa balikin data rapi sesuai field yang kamu minta. Gak perlu tebak-tebak selector.
Di tutorial ini kamu bakal bikin scraper pakai Python dan LLM, dari ambil halaman sampai dapat tabel terstruktur, plus aturan main biar scraping-nya etis.
Apa itu web scraping pakai AI?
Web scraping pakai AI adalah cara ngambil data dari halaman web dengan model bahasa yang baca HTML dan langsung narik informasi terstruktur. Kamu gak nulis selector CSS yang rinci buat tiap field. Cukup kasih HTML plus instruksi kayak "ambil nama produk dan harga", dan model balikin data rapi. Ini bikin scraper lebih tahan sama perubahan tata letak situs.
Bedanya sama scraping klasik jelas. Cara lama ngandelin pola HTML yang persis, jadi begitu situs ganti struktur, kode langsung gagal. Cara AI baca isi halaman kayak manusia baca, jadi lebih fleksibel walau layout berubah.
Kapan sebaiknya pakai AI untuk scraping?
Pakai AI buat scraping kalau struktur situsnya sering berubah, layoutnya rumit, atau kamu perlu narik data dari banyak situs berbeda sekaligus. Buat situs yang strukturnya stabil dan sederhana, scraping klasik pakai selector masih lebih cepat dan murah. AI unggul pas datanya berantakan atau formatnya beda-beda antar halaman.
Ada trade-off yang perlu diinget. AI lebih lambat dan ada biaya per panggilan API. Jadi buat scraping ribuan halaman dengan struktur seragam, cara klasik menang. AI paling pas buat kasus yang bikin selector manual jadi mimpi buruk.
Langkah 1: Ambil HTML halaman
Mulai dari ngambil isi halaman. Buat halaman biasa, library requests di Python udah cukup. Kamu kirim permintaan, dapat HTML mentah balik.
import requests
url = "https://contoh-toko.co.id/produk"
headers = {"User-Agent": "Mozilla/5.0 (riset data)"}
resp = requests.get(url, headers=headers, timeout=10)
html = resp.text
print(f"Panjang HTML: {len(html)} karakter")Kasih User-Agent yang jujur biar situs tahu siapa yang minta. Buat halaman yang isinya dimuat pakai JavaScript, requests gak cukup dan kamu butuh tools kayak Playwright. Tapi buat mayoritas halaman, cara ini jalan.
Langkah 2: Bersihkan HTML sebelum kirim ke AI
HTML mentah penuh sampah: tag script, style, dan navigasi yang gak kamu butuh. Ngirim semuanya ke LLM boros token dan bikin hasil berisik. Bersihin dulu pakai BeautifulSoup, ambil teks pentingnya aja.
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
# Buang script dan style
for tag in soup(["script", "style", "nav", "footer"]):
tag.decompose()
# Ambil teks bersih
teks_bersih = soup.get_text(separator=" ", strip=True)
print(teks_bersih[:500])Langkah ini penting buat hemat biaya. Makin sedikit teks yang dikirim, makin murah dan makin fokus hasilnya. Detail cara pakai BeautifulSoup ada di dokumentasi resmi BeautifulSoup.
Langkah 3: Ekstrak data terstruktur pakai LLM
Inti prosesnya di sini. Kamu kirim teks bersih ke model bahasa dengan instruksi field apa yang mau diambil, dan minta hasilnya dalam format JSON. JSON bikin hasilnya gampang diolah lagi jadi tabel.
from openai import OpenAI
import json
client = OpenAI()
prompt = f"""Dari teks halaman produk ini, ambil daftar produk.
Untuk tiap produk, ambil: nama, harga, stok.
Balas HANYA dalam JSON array.
Teks:
{teks_bersih}"""
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
temperature=0,
response_format={"type": "json_object"},
)
data = json.loads(resp.choices[0].message.content)
print(data)Perhatiin temperature=0 dan response_format JSON. Dua ini bikin hasil model stabil dan gampang di-parse. Buat ekstraksi data, kamu mau konsisten, bukan kreatif.
Langkah 4: Ubah jadi tabel dan simpan
Hasil JSON tinggal dimasukin ke pandas biar jadi tabel yang rapi. Dari sini kamu bisa simpan ke CSV, olah lagi, atau masukin ke database.
import pandas as pd
df = pd.DataFrame(data["produk"])
df.to_csv("produk_hasil_scraping.csv", index=False)
print(df.head())
print(f"Total produk: {len(df)}")Sekarang data yang tadinya kekunci di HTML udah jadi tabel yang bisa dianalisa. Kalau kamu mau lanjut olah teksnya, cek AI untuk analisa survei buat pola yang mirip.
Etika dan aturan web scraping
Scraping bukan berarti bebas ambil apa aja. Sebelum scraping, cek file robots.txt situs (misal situs.com/robots.txt) buat lihat halaman mana yang boleh diakses bot. Hormati aturan itu.
Beberapa hal wajib: kasih jeda antar permintaan biar gak ngebanjirin server, jangan ambil data pribadi tanpa izin, dan baca syarat layanan situs. Scraping yang agresif bisa bikin IP kamu diblokir, dan ngambil data pribadi bisa masalah hukum.
import time
# Kasih jeda 2 detik antar halaman
for url in daftar_url:
scrape(url)
time.sleep(2)Contoh kasus: pantau harga kompetitor toko_berkah
Aku pakai alur ini buat proyek dataset ngulikdata: pantau harga 5 produk sembako di 3 toko online, buat toko_berkah bandingin harga.
Scraping klasik sempat aku coba dulu. Tiga situs punya struktur HTML beda total, dan aku habis sekitar 2 jam nulis selector buat masing-masing. Seminggu kemudian satu situs ganti layout, dan scraper-nya rusak.
Pakai AI, satu prompt yang sama jalan buat ketiga situs, karena model baca isi bukan struktur. Waktu setup turun jadi sekitar 25 menit, dan pas satu situs ganti layout, kodenya tetap jalan tanpa diubah. Biaya API buat 15 halaman per hari cuma beberapa ratus rupiah.
Kesalahan umum saat scraping pakai AI
Pertama, kirim seluruh HTML mentah ke LLM. Itu boros token dan mahal. Selalu bersihin dulu, ambil teks pentingnya aja.
Kedua, percaya hasil AI tanpa cek. Model bisa salah baca angka atau ngarang field yang gak ada. Cek sampel hasil, terutama buat data harga yang harus akurat.
Ketiga, lupa response_format JSON. Tanpa itu, model kadang balikin teks bebas yang susah di-parse, dan kode kamu error.
Keempat, abaikan robots.txt dan jeda. Scraping agresif bikin IP diblokir dan itu ngerugiin kamu sendiri.
FAQ
Apa web scraping pakai AI legal?
Tergantung apa yang kamu ambil dan gimana caranya. Ngambil data publik yang gak dilindungi hak cipta umumnya lebih aman, tapi ngambil data pribadi atau ngelanggar syarat layanan situs bisa masalah hukum. Selalu cek robots.txt dan terms of service situs dulu. Kasih jeda antar permintaan biar gak ngebebanin server. Kalau ragu apalagi buat data komersial, konsultasi ke yang ngerti hukum sebelum jalan.
Apa AI lebih mahal dari scraping biasa?
Iya, per halaman AI lebih mahal karena ada biaya panggilan API tiap ekstraksi. Scraping klasik sekali kode jadi bisa jalan gratis berkali-kali. Tapi AI hemat di sisi lain: waktu setup lebih cepat dan kode gak gampang rusak pas situs ganti layout. Buat volume kecil sampai sedang dengan struktur situs yang berubah-ubah, hemat waktunya sering sepadan sama biaya API-nya. Buat jutaan halaman seragam, scraping klasik lebih murah.
Bisa gak AI scrape situs yang pakai JavaScript?
AI bagian ekstraksinya bisa, tapi masalahnya di ngambil HTML-nya dulu. Situs yang isinya dimuat pakai JavaScript gak keambil penuh sama library sederhana kayak requests, karena kontennya baru muncul setelah browser jalanin skrip. Buat kasus ini kamu butuh tools yang jalanin browser sungguhan kayak Playwright atau Selenium buat ambil HTML final. Setelah HTML-nya lengkap, baru kirim ke LLM buat diekstrak kayak biasa.
Model AI apa yang cocok buat scraping?
Buat ekstraksi data terstruktur dari teks, model kecil kayak gpt-4o-mini atau setara biasanya cukup, karena tugasnya sederhana dan berulang. Model besar baru kepakai kalau halamannya panjang, isinya rumit, atau butuh penalaran ekstra buat misahin data. Buat hemat, selalu bersihin HTML dulu biar teks yang dikirim lebih pendek. Mulai dari model murah, naikin cuma kalau hasil ekstraksinya kurang akurat di sampel yang kamu cek.
Penutup
AI gak gantiin scraping klasik buat semua kasus. Dia unggul pas struktur situs berubah-ubah atau layoutnya bikin selector jadi ribet.
Alurnya tetap sama: ambil HTML, bersihin, kirim ke LLM minta JSON, ubah jadi tabel. Sekali punya template ini, situs baru tinggal ganti prompt.
Jangan lupa mainnya etis: cek robots.txt, kasih jeda, hormati data pribadi. Mau lanjut olah hasil scraping-mu? Baca AI untuk analisa survei, dan pelajari dasar pemrosesan teks di glossary NLP.
Mau praktek langsung? Mulai latihan SQL gratis
Latihan interaktif, langsung di browser.
Artikel terkait
Tools Text-to-SQL Terbaik untuk Analis Data (2026)
Ketik pertanyaan pakai bahasa biasa, keluar query SQL. Ini daftar tool text-to-SQL terbaik 2026, kelebihan dan kekurangan tiap tipe, plus cara milih yang pas.
AI untuk Deteksi Anomali pada Data: Panduan Praktis (2026)
Deteksi transaksi janggal, lonjakan aneh, atau error input otomatis. Ini metode statistik dasar sampai Isolation Forest, lengkap kode SQL dan Python plus contoh toko.
LLM Lokal untuk Analisa Data yang Privat
LLM lokal bikin kamu bisa pakai AI buat analisa data tanpa data sensitif keluar dari komputer. Ini cara kerjanya, tool yang dipakai, dan batasannya.