Melacak harga supermarket
- Pada Desember 2022, sebuah situs web dibangun untuk melacak perubahan harga di tiga supermarket utama di Yunani.
- Dalam prosesnya, berbagai masalah harus diselesaikan, dan banyak pelajaran pun didapat.
Scraping situs js
- Masalah utamanya adalah situs web yang dirender dengan JavaScript.
- Playwright digunakan untuk mengendalikan browser web secara terprogram.
- Playwright mendukung browser Chromium, Safari, dan Firefox, serta dapat digunakan bersama Node, Java, .NET, dan Python.
- Ditulis kode untuk menangani infinite scroll dan mengekstrak informasi produk.
Otomatisasi
- Di M1 MacBook Pro, scraping seluruh supermarket memerlukan waktu antara 50 menit hingga 2 jam 30 menit.
- Ini bagus untuk pengembangan dan pengujian, tetapi dibutuhkan solusi yang lebih permanen.
Menggunakan laptop lama?
- Dicoba memakai laptop lama dari tahun 2013, tetapi performanya sangat mengecewakan.
Menggunakan cloud?
- AWS terlalu mahal, sedangkan Hetzner jauh lebih murah.
- Diputuskan untuk menggunakan server Hetzner.
Menggunakan laptop lama dan cloud!
- Scraping diotomatisasi di server cloud, dan laptop lama digunakan sebagai server CI.
- Pipeline disiapkan dengan Concourse, dan pekerjaan scraping dijalankan setiap hari.
Menghindari pembatasan IP
- Karena aturan firewall Akamai, permintaan dari alamat IP non-residensial diblokir.
- Tailscale digunakan agar permintaan terlihat seolah-olah berasal dari alamat IP rumah.
Penyebab dan waktu kegagalan
- Proyek scraping dipengaruhi oleh para pengembang situs web.
- Ada dua jenis kegagalan: breaking change dan non-breaking change.
- Penting untuk mendapatkan umpan balik secepat mungkin.
Optimasi
- Berbagai optimasi dilakukan, seperti notifikasi email, histeresis, timeout, dan pengaturan retry.
- Kinerja ditingkatkan dengan memakai server yang lebih besar dan mengurangi pengambilan data.
Biaya
- Biaya penggunaan server di Hetzner sangat murah.
- Biaya penyimpanan data ditekan dengan menggunakan free tier Cloudflare R2.
Kesimpulan
- Dijelaskan komponen-komponen utama dalam membangun pipeline scraping untuk melacak perubahan harga supermarket.
Ringkasan GN⁺
- Tulisan ini membagikan pengalaman memanfaatkan Playwright dan layanan cloud untuk melacak perubahan harga supermarket.
- Dibahas cara melakukan scraping pada situs web yang dirender dengan JavaScript, serta metode otomatisasi dan optimasinya.
- Dijelaskan juga cara mengurangi biaya dan menghindari pembatasan IP dengan menggunakan Hetzner dan Tailscale.
- Tulisan ini dapat bermanfaat bagi orang-orang yang tertarik pada web scraping dan otomatisasi.
1 komentar
Komentar Hacker News
Berbagi pengalaman mengalami masalah serupa
Sedang menjalankan proyek serupa di Selandia Baru
Membuat situs web serupa dan mendapat banyak perhatian
Dua supermarket besar di Australia berpotensi melakukan monopoli lewat algoritma AI analisis harga
Sudah aktif lebih dari 8 tahun di pasar Swedia
Dengan transparansi harga, pelacakan akan jadi lebih mudah
Cara mengubah sistem agar scraper tidak gagal
Berbagi pengalaman melacak harga saat pindah ke wilayah baru
Yang sulit bukan scraping, melainkan melewati pemblokir yang makin canggih
Masalah perenderan dengan JavaScript sisi klien