Membawa Scrapling ke produksi: ekstraksi langsung dari terminal lewat CLI, shell interaktif untuk eksperimen cepat, Docker image dengan semua browser, MCP server, dan deployment terisolasi.

Di episode 20 kalian membangun budaya testing dan maintenance. Sekarang kita naik satu level: mengoperasikan Scrapling di produksi. Tidak semua orang ingin menulis script Python untuk tugas kecil — dan tidak semua deployment bisa bergantung pada browser yang diinstal manual. Episode 21 membahas tooling yang menjembatani keduanya: CLI, shell interaktif, MCP server, dan Docker image.
Roadmap episode ini: kita mulai dengan CLI untuk ekstraksi dari terminal, lalu flag penting seperti --css-selector dan --impersonate, dilanjutkan shell interaktif, dan ditutup dengan Docker image plus deployment terisolasi untuk produksi.
Sejak v0.3, Scrapling punya CLI yang kuat. Tanpa menulis satu baris Python pun, kalian bisa mengunduh halaman dan mengekstrak isinya langsung ke file. Mulai dengan melihat apa saja yang tersedia:
scrapling --help
scrapling extract --helpPerintah intinya adalah scrapling extract. Format file keluaran ditentukan oleh ekstensinya: .txt menghasilkan teks bersih, .md menghasilkan representasi Markdown, dan .html menyimpan HTML mentah. Secara default isi tag body diekstrak.
Sub-perintah extract memiliki tiga mode yang memetakan ke fetcher yang sudah kalian kenal:
get — request HTTP cepat dengan TLS impersonation.fetch — rendering JavaScript lewat browser.stealthy-fetch — browser stealth untuk menembus anti-bot.scrapling extract get "https://example.com" content.txtKetiga mode memakai mesin yang sama dengan fetcher Python, jadi hasilnya konsisten — bedanya, sekarang semuanya tersedia tanpa menulis kode. Ini berguna untuk task ad hoc, debugging cepat, atau otomasi sederhana via shell script.
Beberapa flag yang paling sering dipakai:
--css-selector — batasi ekstraksi hanya pada elemen yang cocok, menghemat output dan token.--impersonate — pilih fingerprint browser, misal --impersonate "chrome".--no-headless — tampilkan browser di layar, berguna untuk observasi manual.--solve-cloudflare — selesaikan challenge Cloudflare/Turnstile otomatis.scrapling extract get "https://shop.example.com" products.html --css-selector ".product-card" --impersonate "chrome"scrapling extract fetch "https://example.com" content.md --css-selector "#app" --no-headlessDengan --css-selector, kalian mengendalikan persis bagian halaman yang diambil — pola yang sama dengan CSS selector narrowing di MCP server yang dibahas episode 19. Flag --impersonate mengandalkan teknologi yang sama dengan Fetcher di Python: meniru fingerprint TLS dan header browser asli.
Untuk eksplorasi yang lebih dalam daripada sekali eksekusi, ada shell interaktif berbasis IPython. Ia menyediakan shortcut untuk fetch dan manipulasi selector secara live — pasangan sempurna untuk menulis dan menguji selector sebelum dipindahkan ke kode.
pip install "scrapling[shell]"
scrapling install
scrapling shellDi dalam shell, variabel hasil fetch dan seleksi bisa dieksplorasi, diubah, dan diuji ulang dalam hitungan detik. Shell dan CLI berbagi package yang sama (scrapling[shell] mengaktifkan keduanya), jadi pola kerja kalian mengalir mulus dari eksperimen interaktif ke ekstraksi terminal.
Bagian tersulit deployment Scrapling adalah dependency browser. Image Docker resmi menyelesaikan ini: dibangun otomatis setiap rilis, berisi seluruh ekstra [all], semua browser, dan system dependencies yang sudah terkonfigurasi.
docker pull pyd4vinci/scraplingImage ini siap pakai langsung:
docker run -it pyd4vinci/scrapling python
docker run -v "$(pwd)":/app pyd4vinci/scrapling python /app/spider.py
docker run -it pyd4vinci/scrapling scrapling shellUntuk deployment sendiri, jadikan image ini sebagai basis FROM:
FROM pyd4vinci/scrapling:latest
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "spider.py"]Info
Selalu pin image dengan tag versi spesifik di produksi, bukan latest, agar perubahan browser atau library tidak merusak scraper secara diam-diam saat image terbaru di-pull.
Karena semua browser sudah ada di image, StealthyFetcher, PlayWrightFetcher, dan scrapling install tidak perlu dijalankan lagi di runtime — penghematan besar untuk cold start di lingkungan container.
Tooling MCP yang kalian kenal dari episode 19 juga siap jalan di produksi. Server MCP bisa diekspos sebagai layanan sendiri, terisolasi dari scraper utama:
docker run -p 8000:8000 pyd4vinci/scrapling scrapling mcp --httpArsitektur terisolasi yang direkomendasikan: satu container untuk spider utama, satu lagi untuk MCP server yang melayani AI agent, dan keduanya berbagi store data eksternal. Pemisahan ini membuat scaling independen — beban tinggi di sisi crawl tidak mengganggu layanan MCP, dan sebaliknya. Jangan lupa batasi akses server MCP ke jaringan internal atau lindungi dengan auth token.
Episode 21 melengkapi Fase 6 — Modern Ecosystem & Production Readiness: CLI untuk ekstraksi sekali jalan, shell interaktif untuk eksperimen, Docker image sebagai fondasi deployment, dan MCP server sebagai layanan terisolasi. Kalian kini punya jalur dari satu command di terminal hingga platform produksi yang lengkap.
Inti yang harus dibawa pulang:
scrapling extract mengekstrak ke .txt, .md, atau .html tanpa menulis Python.get, fetch, dan stealthy-fetch memetakan langsung ke fetcher inti Scrapling.--css-selector, --impersonate, dan --no-headless memberi kontrol penuh dari terminal.pyd4vinci/scrapling berisi semua browser dan ekstra — pakai sebagai basis image produksi.Di episode 22 — episode terakhir — kita melakukan refleksi menyeluruh: Ekosistem, Alternatif & Refleksi Akhir, membandingkan Scrapling dengan Scrapy, Crawlee, Crawl4AI, dan lainnya, plus rekap lengkap perjalanan 0-21 beserta checklist produksi. Sampai jumpa!