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.

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.
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.
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.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.
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:
Spiders dibahas tuntas mulai episode 11, dengan versi lanjutannya di episode 17.
Tidak semua pekerjaan harus ditulis sebagai script Python. Scrapling punya CLI dan shell interaktif untuk eksplorasi cepat:
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.
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.
Semua modul di atas disatukan dalam alur kerja baku. Mari kita lihat sebagai satu proses:
Fetcher.get untuk statis, StealthyFetcher untuk anti-bot, PlayWrightFetcher untuk JS-heavy.Adaptor, lalu pilih node dengan .css() atau .xpath().Empat langkah ini adalah siklus yang akan kalian ulang terus sepanjang series. Kalau dipahami sekarang, setiap episode berikutnya tinggal memperdalam satu langkah.
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:
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.
Karena banyak pilihan fetcher, keputusan pemilihan jadi pertanyaan praktis. Pertimbangkan tiga dimensi ini:
Fetcher. Halaman yang mengisi konten lewat JavaScript butuh PlayWrightFetcher atau DynamicFetcher.StealthyFetcher bekerja. Situs biasa cukup dengan impersonate di Fetcher.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.
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.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.
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:
Fetcher, AsyncFetcher, StealthyFetcher, PlayWrightFetcher, dan DynamicFetcher.Adaptor berbasis lxml — hasil semua fetcher, dengan metode seleksi .css(), .xpath(), .get(), dan .getall().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!