Pengalaman Membuat E-Commerce Scraper dengan Scrapy

Beberapa bulan ini saya mengembangkan proyek berupa dasbor untuk monitoring toko online dari beberapa e-commerce. Salah satu bagian penting yang ada di proyek ini yaitu crawler / scraper. Crawler digunakan untuk akuisisi data yang selanjutnya akan diolah menjadi data penjualan terintegrasi untuk pemilik toko. Saat ini ada beberapa framework crawler yang banyak digunakan misal saja Apache Nutch yang memiliki keunggulan untuk dapat bekerja pada Hadoop Cluster (versi 2), dan Scrapy yang berbasis Python dan mendukung mode terdistribusi dengan frontera (HBase). Pada awal dijalankannya proyek ini, saya menggunakan Scrapy sebagai framework crawlernya. Kenapa Scrapy? Pertama saya mulai riset dari skala kecil, kedua Scrapy cukup mudah dalam pengaplikasiannya, ketiga dapat dilakukan scaling out tanpa merubah banyak kode. ...

November 3, 2016 · 3 min · 538 words · Me

High Availability Splash Cluster dengan HA-Proxy

Pada tulisan sebelumnya di Integrasi Splash dengan Scrapy, saya mencoba untuk integrasi Splash dengan Scrapy. Awalnya saya menggunakan satu kontainer Splash untuk crawling, tetapi ternyata terkendala saat menggunakan concurrent requests yang sedikit tinggi dan juga situs dengan script yang lumayan berat. Berikut dua isu utama yang sering saya temui saat crawling 504 Gateway Timeout - umumnya error ini disebabkan oleh timeout saat fetching karena faktor tertentu, misal : script yang berat. Connection refused - ini kondisi paling buruk. Pada kasus saya dahulu, connection refused disebabkan oleh kontainer Splash yang mati / ter-kill. Di kondisi ini saya harus menyalakan ulang kontainer, dan menjalankan ulang crawler. Dari kedua isu diatas, saya mencari solusi untuk menanganinya. Dan, setidaknya saya menemukan solusi yang sampai saat ini saya kira solusi terbaik (dua poin diatas tidak saya temui lagi). Berikut langkah yang saya lakukan. ...

August 29, 2016 · 2 min · 377 words · Me

Integrasi Splash dengan Scrapy

Pada tulisan sebelumnya di Rendering Javascript dengan Splash saya telah menulis pengantar dari Splash. Splash adalah salah satu javascript rendering service berbasis WebKit dan layanan ini bersifat headless. Scrapy merupakan salah satu web scraper framework berbasis python yang cukup populer. Pada kondisi default, scrapy tidak mampu melakukan javascript rendering / dynamic webpage load, sehingga diperlukan pihak aplikasi tambahan seperti Selenium atau Splash. Pada tulisan ini saya akan memaparkan cara integrasi Scrapy dengan Splash sebagai dynamic webpage rendering service. Berikut cara integrasinya. ...

August 18, 2016 · 2 min · 218 words · Me

Rendering Javascript dengan Splash

Pengantar Splash Saat ini banyak cara untuk akuisisi data, salah satu yang sedang populer dikembangkan adalah web crawling. Namun, permasalahannya terkendala saat menghadapi situs web dinamis yang menggunakan javascript. ‘Browser’ yang digunakan umumnya tidak mendukung javascript. Splash merupakan salah satu solusi untuk menghadapi situs web dinamis. Splash adalah layanan yang digunakan sebagi rendering javascript. Layanan ini dikembangkan oleh scrapinghub dan mendukung HTTP API untuk interaksi. Pemasangan Splash Jika mengacu pada situs dokumentasi splash, terdapat opsi untuk pemasangan Splash dengan Docker. Berikut langkah yang saya lakukan untuk memasang Splash : ...

June 16, 2016 · 2 min · 279 words · Me