Sebagian besar tools scraping yang jadi sorotan tahun ini ingin menjalankan browser. trafilatura tidak begitu. Ini adalah library pure-Python yang membaca HTML statis, menentukan blok mana yang benar-benar isi artikel, lalu membuang sisanya. Tugas yang sangat spesifik itu — mengekstrak konten utama — memang inti dari tool ini, dan sudah dikerjakannya sejak sebelum istilah "LLM-ready markdown" jadi sesuatu yang umum dipakai.
Saya menguji versi 2.1.0 dengan serangkaian fixture tetap di Python 3.14, dan tes artikel-lah yang paling membekas. Saya membungkus teks asli ke dalam elemen-elemen halaman yang biasa — prompt login, ajakan "Subscribe", link navigasi, footer copyright — lalu trafilatura mengembalikan judul, ketiga paragraf isi, penulis, dan tanggal, tanpa satu pun marker boilerplate itu ikut terbawa. Tanpa browser, tanpa aturan khusus per situs, cukup satu fungsi panggil. Ada catatannya, dan memang ada, ketika Anda meminta sesuatu yang terstruktur. Soal itu saya bahas di bawah (ini soal batas desain, bukan cacat).
Apa itu trafilatura, dan asumsi yang sebaiknya Anda tinggalkan
Deskripsi resmi singkatnya menyebut ini sebagai "Python & command-line tool to gather text and metadata on the Web: crawling, scraping, extraction," dengan output CSV, JSON, HTML, Markdown, TXT, atau XML. Itu memang terdengar luas, tapi justru mengecilkan bagian yang benar-benar membedakan tool ini. Nilai utamanya bukan pada helper crawling atau enam format output itu. Nilainya ada pada content extraction: HTML masuk, teks artikel utama keluar, elemen-elemen antarmuka halaman dibuang.
Begini cara memahaminya, karena ini menjelaskan kekuatan sekaligus batasnya sekaligus. Sebagian besar scraper yang diarahkan ke sebuah halaman bersifat selector-driven. Anda bilang, "ambil elemen dengan class product-price", lalu mereka mengembalikan apa pun yang ada di alamat itu. trafilatura bekerja dari arah sebaliknya. Ia membaca seluruh dokumen dan memutuskan blok mana yang merupakan artikel dan mana yang boilerplate, menggunakan heuristik konten alih-alih selector yang Anda tulis sendiri. Itulah sebabnya ia tidak butuh konfigurasi khusus per situs untuk membersihkan halaman yang belum pernah dilihat. Dan justru karena itu pula ia tidak bisa mengembalikan katalog terstruktur: tidak ada skema, tidak ada pemetaan field, hanya penilaian tentang apa yang dianggap konten. Ia extractor, bukan parser yang Anda arahkan.
Tool ini juga benar-benar ringan. Pure Python, tanpa headless browser, tanpa binary chromium yang diam di cache, tanpa instalasi Playwright yang menunggu menjebak Anda saat pertama dijalankan. Kedengarannya sepele sampai Anda menjalankan ekstraksi ke ribuan URL dan setiap megabyte dependensi serta setiap subprocess jadi beban operasional. Per 2026-07-09, ini proyek dengan sekitar 6,26 ribu bintang (adbar/trafilatura) — repo yang jauh lebih kecil daripada framework browser dan crawler yang sering disandingkan dengannya, dan itu lebih menggambarkan cakupan tool ini daripada kualitasnya.
Instalasinya singkat, dan itu sudah jadi poin ulasan
Instalnya cuma satu baris, dan hampir tidak ada yang perlu diwaspadai — dan justru itu layak dicatat. pip install trafilatura di virtualenv baru menarik satu pohon paket yang bersih di Python 3.14 — tanpa browser untuk diunduh, tanpa langkah pasca-instal, tanpa dinding dependensi transitive yang bikin repot. Saya sudah cukup banyak mengulas library semacam ini untuk menunggu masalah susulan: bundle browser 150MB yang baru ketahuan saat eksekusi pertama, ekstensi native yang gagal dikompilasi, grup tambahan [fetchers] yang tidak pernah disebut orang. Dengan trafilatura, masalah susulannya tidak muncul.
Versi yang diberikan pip kepada saya (2.1.0) cocok dengan rilis terbaru, dipublikasikan pada 2026-06-07, jadi tidak ada angka di bawah ini yang perlu diberi tanda bintang "Anda menguji versi lama". Di kategori ini, itu tidak selalu terjadi — banyak tool yang lebih berat yang saya lihat sudah tertinggal satu versi mayor saat saya menjalankannya. Di sini, build yang diuji dan build yang dirilis adalah sama.
Pengujian langsung: apa yang benar-benar dikembalikan extractor
Saya menjalankan trafilatura pada fixture yang dibuat untuk menguji titik terkuat sekaligus batasnya. Tes artikel adalah yang paling menentukan penilaian saya.

Saya mengambil fixture artikel lokal dan menyembunyikan konten asli di balik noise — prompt login, ajakan "Subscribe", link navigasi, dan footer copyright, tepat seperti boilerplate yang biasanya ikut terseret scraper naif bersama isi utama. trafilatura mengembalikan judul plus ketiga dari tiga paragraf isi, dan semua marker boilerplate yang unik — Login, Subscribe, Copyright — hilang dari output. Selain teks, ia juga berhasil mengambil author dan tanggal dari metadata halaman. Hasilnya keluar dalam format .txt, .md, dan .json dari satu kali panggil.

Detail multi-format ini layak diberi jeda. Satu proses ekstraksi keluar sebagai plain text, Markdown, dan JSON. Jalur Markdown itulah langkah "LLM-ready text" yang sedang dikejar semua orang sekarang: masukkan halaman yang berantakan, dapatkan prosa bersih dengan struktur tetap terjaga, lalu berikan ke model. trafilatura melakukan itu tanpa browser sama sekali di alurnya, yang berarti ia mencapai output serupa tanpa perlu menyalakan seluruh stack rendering seperti tool yang bergantung pada browser.
Lalu saya coba cek ke halaman publik. Saya arahkan ke halaman produk live — halaman produk Books to Scrape — dan hasilnya 1.324 karakter teks bersih plus Markdown: blok deskripsi, terbaca jelas, tanpa elemen antarmuka halaman di sekelilingnya. Saat saya memberinya halaman yang menjawab HTTP 500, fetch_url mengembalikan None alih-alih melempar error. Tidak crash, tidak ada stack trace untuk dijinakkan. Perilaku gagal yang tenang tapi benar seperti ini memang yang Anda inginkan dari sesuatu yang berjalan tanpa pengawasan di jadwal tertentu.
Keterbatasannya
Ada tiga, dan masing-masing memperjelas di mana tool ini cocok dipakai.

Pertama dan paling penting: trafilatura adalah content extractor, bukan structured scraper. Saya menjalankannya pada fixture katalog 12 produk. Ia mengembalikan semua 12 nama produk — dalam bentuk teks — dan tepat 0 baris terstruktur (478 karakter teks datar). Nama dan harga memang ada di output; hanya saja mereka bukan field. Jika yang Anda butuhkan adalah [{name, price, rating}, …], ini bukan tool yang tepat, dan tidak ada flag konfigurasi yang bisa mengubah itu. Ini keputusan desain tentang fungsi tool ini, bukan bug yang perlu dilaporkan.

Kedua: tool ini tidak merender JavaScript. Ia hanya membaca HTML statis. Jika Anda arahkan ke single-page app yang dirender di client, Anda hanya akan mendapat apa yang dikirim server sebelum JavaScript berjalan — yang sering kali tidak berguna. Pasangkan dengan renderer terpisah jika target Anda banyak memakai JS; trafilatura memang tidak mengerjakan bagian itu, dan ia juga tidak mengklaim bisa.
Ketiga, ada catatan tentang bukti yang saya pakai sendiri. Pengujian ekstraksi publik di atas bertumpu pada blok deskripsi produk, bukan artikel berita sungguhan, karena sandbox publik yang saya pakai (keluarga toscrape) semuanya katalog tanpa halaman berita. Hasil pembersihan artikel yang bersih itu berasal dari fixture lokal yang dikontrol. Saya percaya hasil itu — pembuangan boilerplate-nya jelas dan bisa diulang — tetapi halaman produk bukan bukti bahwa ia bisa mengekstrak artikel newsroom-grade, jadi saya tidak akan mengklaimnya seperti itu.
Untuk menutup sebagian celah itu, saya menjalankan demonstrasi terpisah yang sengaja tidak dinilai pada dua halaman artikel sungguhan, dengan membaca fixture tersimpan agar hasilnya deterministik. Pada artikel Wikipedia "Web scraping", trafilatura menurunkan konten dari 230.049 byte HTML mentah menjadi 26.673 byte konten terekstrak (rasio body-to-raw 0,116), dan keempat marker chrome situs yang saya cek — "Jump to content," "Privacy policy," "Powered by MediaWiki," "This page was last edited" — semuanya hilang. Pada artikel Wikinews yang diarsipkan, ia turun dari 79.716 byte menjadi 2.200 (rasio 0,028), dan kelima marker yang saya cek juga dibuang. Title, tanggal, dan hostname kembali terisi di keduanya; author dan sitename kembali bernilai null di keduanya, dan saya laporkan kekosongan itu apa adanya. Ada dua hal yang perlu dijaga di sini: rasio byte itu mengukur seberapa banyak markup dan chrome yang dibuang, bukan akurasi ekstraksi, dan kedua halaman berasal dari keluarga MediaWiki yang sama, jadi ini adalah demonstrasi pada artikel nyata, bukan korpus yang mewakili semuanya.
Untuk akurasi secara khusus, saya akan merujuk ke bukti eksternal alih-alih berpura-pura saya mengukurnya sendiri. trafilatura punya halaman evaluasi, dan di benchmark artikel-extraction ScrapingHub ia mencatat F1 open-source tertinggi (sekitar 0,945) dibanding pembanding seperti readability-lxml (~0,887). Ada dua catatan jujur untuk angka itu: angka tersebut berasal dari benchmark itu, bukan dari pengujian saya, dan angka ~0,945 yang dilaporkan merujuk ke baris versi 0.5.1 yang lebih lama, bukan 2.1.0 yang saya jalankan. Jadi, anggap itu sebagai bukti benchmark eksternal yang menjelaskan reputasi tool ini, bukan hasil pengukuran dari ulasan ini.
Kelebihan dan kekurangan
Kelebihan:
- Ekstraksi artikel paling bersih dalam pengujian saya — judul plus semua 3 dari 3 paragraf, semua marker boilerplate (Login/Subscribe/Copyright) dibuang.
- Berhasil mengambil metadata author dan tanggal bersamaan dengan isi.
- Output multi-format dari satu panggilan: txt, Markdown, dan JSON — jalur Markdown-nya benar-benar cocok untuk teks LLM-ready.
- Instalasi ringan, pure-Python — tanpa browser, tanpa unduhan binary, tanpa beban dependensi.
- Kegagalan yang tetap tenang:
fetch_urlmengembalikanNonesaat HTTP 500, bukan melempar error. - Versi yang diuji sama dengan rilis saat ini (2.1.0) — tidak ada gap versi.
- Berlisensi Apache-2.0 — permisif dan ramah untuk penggunaan komersial.
Kekurangan:
- Bukan scraper terstruktur: tes katalog mengembalikan 12 nama sebagai teks dan 0 baris bertipe. Tidak ada skema, tidak ada field.
- Tidak merender JavaScript — hanya HTML statis; perlu renderer terpisah untuk halaman client-side.
- Metadata pada beberapa situs hanya sebagian: author dan sitename kembali null pada dua fixture artikel nyata.
- Tes prosa publik saya memakai blok deskripsi produk, bukan artikel berita sungguhan.
- Spider crawl/sitemap bawaan dan format output CSV/XML tidak diuji pada pass ini, jadi saya tidak membuat klaim apa pun tentang keduanya.
Cocok untuk siapa — dan siapa yang sebaiknya lewat
trafilatura jelas ditujukan untuk orang yang masalahnya adalah "Saya punya URL dan saya ingin teks artikel yang bersih, tanpa navbar, banner cookie, dan ajakan newsletter." Membangun korpus teks, memberi halaman ke model, mengarsipkan konten yang mudah dibaca, menjalankan NLP di atas artikel web — itulah jalurnya, dan tool ini sangat bagus di sana. Kalau Anda ingin langkah ringan tanpa browser yang mengubah HTML berantakan menjadi Markdown atau JSON yang bersih, instal saja dan lanjutkan pekerjaan Anda.
Lewati tool ini jika yang Anda butuhkan sebenarnya adalah ekstraksi terstruktur: baris produk berharga, record bertipe, field key: value. Ia memberi Anda teks, bukan tabel — tes katalog berhasil mengambil nama, tetapi bukan baris, dan itu tidak akan berubah. Lewati juga kalau target Anda merender konten di browser dan Anda tidak mau menambahkan renderer terpisah, karena trafilatura hanya membaca HTML statis lalu berhenti di situ. Mode gagalnya tidak dramatis; Anda hanya mendapat hasil kosong atau tipis lalu bingung kenapa. Cocokkan tool dengan pekerjaannya — teks artikel, ya; JSON terstruktur atau halaman hasil render JS, cari opsi lain.
Alternatif, termasuk posisi Thunderbit
Coba Thunderbit untuk Ekstraksi Data Web
Pertama, framing yang adil. trafilatura adalah library gratis, berlisensi Apache-2.0, dan self-hosted yang Anda jalankan sendiri. Anda memegang kodenya, biayanya nol per halaman, dan cukup ringan untuk dimasukkan ke pipeline apa pun tanpa beban operasional besar. Untuk tugas spesifik mengubah artikel menjadi teks bersih, kombinasi ini sulit ditandingi, dan layanan berbayar tidak mengubah kesimpulan itu.
Perbandingannya baru jadi menarik di batas yang memang sengaja digambar trafilatura: data terstruktur dan JavaScript. Dua hal itulah yang tidak akan dikerjakannya, dan kebetulan itulah juga dua hal yang memang ingin ditangani oleh managed extraction API. Di sinilah stack developer milik Thunderbit berada — di sisi lain garis itu, melengkapi trafilatura alih-alih bersaing dengannya pada teks artikel HTML statis. Endpoint /distill melakukan jenis pekerjaan yang sama dengan trafilatura: halaman menjadi Markdown bersih yang siap untuk LLM, tetapi dengan rendering JavaScript yang ditangani di server, yaitu bagian yang justru dilewati trafilatura. Sementara /extract mengembalikan JSON terstruktur berdasarkan skema yang Anda tentukan, yaitu bagian yang memang ditolak trafilatura secara desain: katalog yang kembali sebagai 478 karakter teks datar adalah kasus yang akan lebih cocok memakai /extract. Untuk AI agent dan coding assistant, ada MCP server dengan field-suggestion tool yang gratis dicoba, serta CLI lewat npx @thunderbit/thunderbit-cli untuk pekerjaan terminal, CI, dan cron. Tool ini berjalan di engine yang sama dengan Thunderbit Chrome Extension yang dipakai lebih dari 100.000 orang, jadi jalur non-teknis juga ada, tetapi bagi audiens ini, API, MCP, dan CLI adalah permukaan yang paling relevan.
Jadi, trade-off sebenarnya bukan pernah soal kualitas ekstraksi teks — trafilatura menang di halaman yang memang menjadi targetnya, dan itu saya katakan terus terang. Ini soal cakupan dan siapa yang menjalankan browser. Butuh teks artikel bersih dari HTML statis, self-hosted, dengan biaya per-panggilan nol? trafilatura adalah alat yang lebih ringan dan lebih tajam, titik. Butuh JSON terstruktur berdasarkan skema, atau halaman baru tampil setelah JavaScript berjalan? Itu wilayah stack managed, dan bukan pertarungan yang ingin diambil trafilatura. Harga untuk sisi managed ada di halaman pricing Thunderbit jika Anda sedang menimbang biaya per halaman versus biaya mengoperasikan renderer sendiri.
Jika Anda sedang membandingkan opsi di seluruh kategori, saya menyimpan perbandingan berkala tentang web scraping tools yang benar-benar saya pakai, yang menempatkan library seperti ini berdampingan dengan alternatif berbasis browser dan managed.
Kesimpulan
Haruskah Anda memakai trafilatura? Ya — jika pekerjaan Anda adalah mengubah HTML yang berantakan menjadi teks artikel yang bersih, dan Anda paham dua hal yang memang sengaja tidak dilakukannya. Tool ini membersihkan halaman dari semua marker boilerplate dan mengembalikan judul, ketiga paragraf isi, serta author dan tanggal, dari satu instalasi ringan tanpa browser sama sekali. Ia menghasilkan txt, Markdown, dan JSON sekaligus, sehingga layak disebut langkah teks yang siap untuk LLM. Di saat banyak orang yakin Anda perlu headless browser dan AI crawler untuk melakukan apa pun, justru tool yang tidak membuka browser inilah yang membersihkan data yang saya butuhkan.
Tapi ukurannya harus pas. Ini extractor, bukan structured scraper — katalog kembali sebagai 12 nama teks dan 0 baris. Ia membaca HTML statis dan tidak menjalankan JavaScript. Ekstraksi metadata-nya kuat di beberapa halaman dan hanya sebagian di halaman lain (author dan sitename bernilai null pada dua fixture artikel nyata yang saya cek). Dan tes prosa publik saya bertumpu pada blok deskripsi produk, bukan artikel berita sungguhan, jadi anggap klaim setara newsroom-grade itu masih menjanjikan, belum final. Di dalam batas-batas itu, trafilatura mengerjakan satu tugasnya dengan lebih bersih daripada tool yang lebih berat yang saya bandingkan dengannya — dan melakukannya dengan hampir tanpa apa pun yang perlu dipasang.
Coba Thunderbit untuk Ekstraksi Data Web Get Started Free
FAQ
Apa yang sebenarnya diekstrak trafilatura dari sebuah halaman? Konten utama — tubuh artikel plus judul, dan metadata seperti author serta tanggal — sambil membuang boilerplate. Dalam pengujian saya, ia mengembalikan judul dan semua 3 dari 3 paragraf isi dari halaman yang dibungkus navigasi, login, subscribe, dan copyright, dan semua marker itu hilang dari output. Ia menentukan apa yang dianggap konten menggunakan heuristik, jadi tidak butuh selector khusus per situs untuk membersihkan halaman yang belum pernah dilihat sebelumnya.
Bisakah trafilatura mengubah katalog produk menjadi baris terstruktur? Tidak. Ini content extractor, bukan structured scraper. Pada fixture katalog 12 produk, ia mengembalikan semua 12 nama produk sebagai teks datar (478 karakter) dan 0 baris terstruktur — nama-namanya ada di output, tetapi bukan sebagai field. Jika Anda butuh record bertipe seperti name/price/rating, gunakan parser berbasis selector atau API ekstraksi berbasis skema.
Apakah trafilatura merender JavaScript? Tidak. Ia hanya memproses HTML statis. Jika Anda arahkan ke halaman yang dirender di client, Anda hanya akan mendapat apa yang dikirim server sebelum JavaScript berjalan — yang sering kali bukan isi yang Anda cari. Pasangkan dengan renderer terpisah jika target Anda banyak memakai JS; trafilatura membaca dokumen statis lalu berhenti di situ.
Apakah trafilatura sulit dipasang?
Tidak — justru itu salah satu daya jual utamanya. pip install trafilatura menarik satu pohon paket yang bersih di virtualenv baru pada Python 3.14, tanpa unduhan browser, tanpa langkah pasca-instal, dan tanpa grup ekstra tersembunyi. Versi yang dipasang pip (2.1.0) sama dengan rilis terbaru, dipublikasikan pada 2026-06-07.
Seberapa akurat trafilatura dibanding extractor lain? Saya tidak melakukan benchmark akurasi di ulasan ini, jadi saya akan merujuk ke bukti eksternal. trafilatura punya halaman evaluasi, dan di benchmark article-extraction ScrapingHub ia melaporkan F1 open-source tertinggi (sekitar 0,945) dibanding pembanding seperti readability-lxml (~0,887). Perlu dicatat bahwa angka itu berasal dari benchmark tersebut pada baris 0.5.1 yang lebih lama, bukan 2.1.0 yang saya uji — jadi bacalah itu sebagai bukti eksternal tentang reputasi tool ini, bukan hasil pengukuran dari artikel ini.


