Belajar Scrapling - Konsep Dasar & Arsitektur Utama
Episode 2 of 23

Belajar Scrapling - Konsep Dasar & Arsitektur Utama

Memetakan arsitektur Scrapling: modul inti fetchers yang menangani HTTP maupun browser, parser Adaptor berbasis lxml, spider framework, CLI, dan MCP server. Menjelaskan alur kerja lengkap dari fetch HTML, parse dan seleksi elemen, ekstraksi data, hingga crawl lanjutan.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 1 kalian sudah mengenal siapa pembuat Scrapling, perjalanan versinya, dan masalah yang ia selesaikan. Sekarang saatnya masuk ke bagian dalam: bagaimana Scrapling disusun, dan bagaimana alur kerja memakai setiap modulnya.

Episode ini memberi peta arsitektur. Kalian tidak akan menulis banyak kode — ini pemahaman konseptual yang jadi dasar semua episode teknis berikutnya. Setelah episode ini, tiap kali kita menyebut Fetcher, Adaptor, atau Spider, kalian sudah tahu tempatnya di peta besar.

Empat Kelas Fetcher

Fetcher adalah gerbang pertama semua operasi: bertugas mengambil HTML dari target. Scrapling menyediakan beberapa kelas fetcher yang masing-masing punya peran berbeda:

  • Fetcher — request HTTP sinkron berbasis curl_cffi. Ini si cepat: TLS impersonation bawaan, tanpa browser, ideal untuk halaman statis.
  • AsyncFetcher — versi async dari Fetcher memakai aiohttp, untuk request paralel dalam skala besar.
  • StealthyFetcher — mengendalikan browser sungguhan lewat Chrome DevTools Protocol untuk menembus anti-bot berat seperti Cloudflare dan Turnstile.
  • PlayWrightFetcher — membungkus Playwright untuk konten dinamis dan render JavaScript.
  • DynamicFetcher — pendekatan hibrida yang mencoba jalur HTTP cepat lebih dulu, lalu turun ke browser jika diperlukan.

Pemilihan fetcher adalah keputusan strategis. Aturan kasarnya: mulailah dari Fetcher, naik ke AsyncFetcher untuk skala, dan cadangkan browser fetcher hanya untuk situs yang benar-benar butuh JavaScript atau menolak HTTP polos.

Parser Adaptor: Jantung Seleksi

Hasil semua fetcher adalah objek Adaptor — parser berbasis lxml yang sudah di-optimasi keras. Kalau fetcher adalah tangan yang mengambil, Adaptor adalah otak yang membaca. Objek ini memegang pohon DOM dari HTML mentah dan menyediakan metode seleksi:

  • .css(selector) untuk CSS selector.
  • .xpath(selector) untuk XPath.
  • .get() dan .getall() untuk mengambil satu atau banyak hasil.
  • Metode lanjutan seperti find_by_text dan find_by_regex yang kita pelajari di episode 5.

Karena berbasis lxml, semua operasi seleksi berjalan dalam kecepatan C, bukan interpretasi Python murni. Ini alasan klaim 400-600 kali lebih cepat dari BeautifulSoup yang berbasis parser Python.

Spider Framework: Dari Satu Halaman ke Seluruh Situs

Ketika target sudah lebih dari beberapa halaman, kalian tidak menulis loop manual. Scrapling menyediakan Spider — framework untuk mendefinisikan crawl sebagai serangkaian request, callback, dan rule. Ini konsep yang mirip Scrapy, tapi tetap memakai seluruh keunggulan Scrapling: selektor self-healing, fetcher stealth, dan async.

Dengan Spider kalian bisa:

  • Memulai dari satu atau beberapa URL seed.
  • Mengekstrak link di halaman, lalu mengikutinya secara otomatis.
  • Membatasi kedalaman crawl dan menerapkan throttling.
  • Menyimpan state untuk pause/resume jika crawl terputus.

Spiders dibahas tuntas mulai episode 11, dengan versi lanjutannya di episode 17.

CLI dan Shell: Bekerja Tanpa Menulis File

Tidak semua pekerjaan harus ditulis sebagai script Python. Scrapling punya CLI dan shell interaktif untuk eksplorasi cepat:

Fetch sekali dari terminal
scrapling fetch https://example.com --css-selector "h1"

Perintah di atas mengambil halaman dan langsung mengekstrak semua elemen yang cocok dengan selector — tanpa menulis satu baris pun di editor. Sementara itu, shell interaktif (scrapling[shell]) memberi REPL tempat kalian bisa mengetik selektor satu per satu dan melihat hasilnya langsung. Ini alat debugging yang sangat nyaman sebelum menuangkan selektor ke kode permanen. Episode 21 membahas CLI secara menyeluruh.

MCP Server: Scrapling untuk AI Agent

Fitur modern terakhir di arsitektur ini adalah MCP server. MCP (Model Context Protocol) memungkinkan AI agent seperti Claude atau OpenClaw memanggil Scrapling sebagai tool. Artinya, agent bisa melakukan fetch dan ekstraksi nyata saat menjawab pertanyaan, bukan sekadar menebak dari pengetahuan internalnya.

MCP server ini membuka pola kerja baru: agent AI yang meneliti harga, menganalisis kompetitor, atau mengumpulkan data riset secara langsung. Ini kita bahas praktisnya di episode 19 bersama integrasi AI.

Alur Kerja Utama

Semua modul di atas disatukan dalam alur kerja baku. Mari kita lihat sebagai satu proses:

  1. Fetch HTML — pilih fetcher sesuai kebutuhan: Fetcher.get untuk statis, StealthyFetcher untuk anti-bot, PlayWrightFetcher untuk JS-heavy.
  2. Parse & select elemen — HTML mentah diubah Adaptor, lalu pilih node dengan .css() atau .xpath().
  3. Extract data — ambil teks, atribut, atau struktur dari node terpilih dan susun menjadi dictionary atau list.
  4. Crawl lanjutan (opsional) — jika halaman punya link lain yang relevan, lanjutkan ke fetch berikutnya, otomatis lewat Spider.

Empat langkah ini adalah siklus yang akan kalian ulang terus sepanjang series. Kalau dipahami sekarang, setiap episode berikutnya tinggal memperdalam satu langkah.

Mencoba Alur Kerja dengan Contoh Nyata

Untuk mengikat konsep, mari jalankan siklus lengkap pada satu halaman sederhana. Kode ini sudah memakai semua yang kita bahas — pilih fetcher, parse dengan Adaptor, dan ekstrak:

Pythonalur-kerja.py
from scrapling import Fetcher
 
page = Fetcher.get("https://example.com")
 
judul = page.css("h1").text
paragraf = page.css("p").getall()
 
print("Judul:", judul)
print("Jumlah paragraf:", len(paragraf))

Perhatikan betapa lurusnya alur ini: Fetcher.get mengembalikan Adaptor (page), lalu .css("h1") dan .css("p") memilih node, .text mengambil teks, dan .getall() mengambil semua hasil. Tidak ada library perantara.

Memilih Fetcher yang Tepat

Karena banyak pilihan fetcher, keputusan pemilihan jadi pertanyaan praktis. Pertimbangkan tiga dimensi ini:

  • Statis atau dinamis? Halaman yang dirender server cukup dengan Fetcher. Halaman yang mengisi konten lewat JavaScript butuh PlayWrightFetcher atau DynamicFetcher.
  • Ada anti-bot? Website yang memakai Cloudflare atau Turnstile biasanya menolak request HTTP polos — di sinilah StealthyFetcher bekerja. Situs biasa cukup dengan impersonate di Fetcher.
  • Butuh kecepatan? Untuk ribuan halaman, AsyncFetcher memungkinkan request paralel tanpa memakan sumber daya sebanyak browser.

Kesalahpahaman umum: browser fetcher selalu "lebih baik". Faktanya, browser memakan memori dan CPU jauh lebih besar. Aturan yang sehat adalah mencoba Fetcher dulu untuk setiap target baru, dan naik ke browser hanya ketika request HTTP gagal atau halaman tidak ter-render.

Dependency Eksternal di Balik Layar

Arsitektur Scrapling juga menarik karena ia memilih library pihak ketiga terbaik di tiap lapisan, bukan menulis semuanya dari nol:

  • curl_cffi — fondasi Fetcher dan AsyncFetcher, menyediakan TLS impersonation dan HTTP/2.
  • lxml — parser C di balik Adaptor yang membuat seleksi super cepat.
  • playwright — mesin di balik PlayWrightFetcher.
  • Chrome DevTools Protocol — jalur komunikasi StealthyFetcher dengan browser.

Pola ini menjelaskan kenapa ekstra instalasi seperti scrapling[fetchers] ada: kalian hanya mengunduh dependency berat (browser, Playwright) saat benar-benar butuh. Kalian merasakan struktur ini dari luar saat import scrapling tetap ringan untuk pemakaian HTTP murni.

Penutup

Sekarang kalian punya peta arsitektur Scrapling: lima fetcher dengan peran masing-masing, parser Adaptor berbasis lxml sebagai jantung seleksi, spider framework untuk skala, CLI dan shell untuk kecepatan kerja, serta MCP server untuk integrasi AI. Semua bersatu dalam siklus fetch, parse, extract, dan crawl.

Inti yang harus dibawa pulang:

  • Fetchers adalah gerbang pertama: Fetcher, AsyncFetcher, StealthyFetcher, PlayWrightFetcher, dan DynamicFetcher.
  • Adaptor berbasis lxml — hasil semua fetcher, dengan metode seleksi .css(), .xpath(), .get(), dan .getall().
  • Spider framework mengubah satu request menjadi crawl otomatis berskala penuh.
  • CLI dan shell interaktif mempercepat eksplorasi tanpa menulis file.
  • MCP server memungkinkan AI agent memakai Scrapling sebagai tool.
  • Alur kerjanya: fetch HTML, parse, extract data, lalu crawl lanjutan.

Di episode 3 kita masuk ke praktik pertama yang serius: Fetcher dan request HTTP — session, TLS impersonation, dan cara menangani status serta redirect. Sampai jumpa!