Dari Regex ke LLM: Perjalanan Saya Mengekstrak Data Web
Saya membangun alat perbandingan harga. Saya perlu menarik data produk dari puluhan situs e-commerce. Setiap situs memiliki struktur yang berbeda. Beberapa menggunakan kelas CSS acak. Beberapa menggunakan JavaScript untuk memuat konten.
Awalnya saya mencoba cara klasik. Saya menggunakan Regex dan BeautifulSoup.
Cara itu berhasil untuk dua situs. Kemudian, salah satu situs mengubah tata letaknya. Kode saya rusak. Situs lain menggunakan konten dinamis. Saya menghabiskan lebih banyak waktu untuk memperbaiki scraper daripada menggunakan datanya.
Lalu saya mencoba AI. Saya memasukkan HTML mentah ke dalam LLM.
Hasilnya buruk. Outputnya tidak konsisten. Terkadang saya mendapatkan JSON. Terkadang saya mendapatkan paragraf. Model tersebut mengalami halusinasi data. Biayanya terlalu tinggi karena saya mengirim terlalu banyak token.
Saya menemukan jalan tengah. Sekarang saya menggunakan pendekatan hibrida.
Berikut adalah proses saya:
- Praproses HTML. Saya menghapus script, style, dan bilah navigasi. Saya hanya menyisakan teks yang terlihat. Ini mengurangi jumlah token dan biaya.
- Gunakan mode JSON atau function calling. Ini memaksa LLM untuk mengembalikan data terstruktur.
- Gunakan logika retry. Jika JSON salah, kode akan mencoba lagi.
- Cache hasil. Saya menyimpan ekstraksi yang berhasil per URL untuk menghindari membayar halaman yang sama dua kali.
Regex dan BeautifulSoup masih yang terbaik untuk situs statis yang terstruktur dengan baik. Keduanya cepat dan gratis.
LLM lebih baik untuk situs yang berantakan dan tidak terprediksi. Namun, Anda harus membersihkan datanya terlebih dahulu agar biaya tetap rendah.
Pelajaran yang saya dapatkan:
- Pantau biaya dan tingkat keberhasilan Anda.
- Perhatikan latensi Anda. Pemanggilan LLM memakan waktu hitungan detik, bukan milidetik.
- Validasi output. Periksa apakah harganya terlihat seperti harga asli.
- Gunakan sistem hibrida. Gunakan parser untuk situs yang mudah dan LLM untuk situs yang berantakan.
Pengaturan ini menghemat waktu kerja saya berjam-jam. Saya dapat menambahkan toko baru dalam waktu kurang dari satu jam.
Bagaimana Anda menangani data web yang berantakan? Apakah Anda lebih suka parser atau LLM?
Komunitas belajar opsional: https://t.me/GyaanSetuAi