De fleste av skrapeverktøyene som får oppmerksomhet i år, vil kjøre en nettleser. trafilatura gjør ikke det. Det er et rent Python-bibliotek som leser statisk HTML, finner ut hvilke blokker som faktisk er artikkelen, og kaster resten. Den smale oppgaven — å hente ut hovedinnhold — er hele poenget, og det er noe biblioteket har gjort lenge før «LLM-ready markdown» ble et uttrykk folk brukte.
Jeg kjørte versjon 2.1.0 gjennom et fast sett med testfiler i Python 3.14, og artikkeltesten er den som festet seg hos meg. Jeg pakket inn en ekte tekst i det vanlige sideoppsettet — en innloggingsprompt, en «Abonner»-påminnelse, navigasjonslenker, en copyright-footer — og trafilatura leverte tilbake tittelen, alle de tre avsnittene i brødteksten, forfatteren og datoen, med alle disse standardelementene borte. Ingen nettleser, ingen regler per nettsted, ett funksjonskall. Men det finnes en hake, og den viser seg i det øyeblikket du ber om noe strukturert. Mer om det nedenfor (det er en avgrensning i designet, ikke en feil).
Hva trafilatura er, og antakelsen det er verdt å legge bort
Den offisielle énlinjebeskrivelsen kaller det et «Python- og kommandolinjeverktøy for å hente tekst og metadata på nettet: crawling, scraping, extraction», med eksport til CSV, JSON, HTML, Markdown, TXT eller XML. Det favner bredt, men det undervurderer delen som faktisk skiller verktøyet ut. Verdien ligger ikke i crawl-hjelperne eller de seks eksportformatene. Den ligger i innholdsuttrekk: HTML-dokument inn, hovedartikkel ut, sidepynt fjernet.
Her er tankemodellen, fordi den forklarer både styrken og grensen i ett grep. De fleste skrapere du peker mot en side, er selektorstyrte. Du sier «hent elementet med klassen product-price», og de returnerer det som ligger der. trafilatura gjør det motsatte. Den leser hele dokumentet og avgjør hvilke blokker som er artikkelen og hvilke som er standardstøy, ved hjelp av innholdsheuristikk i stedet for en selektor du har skrevet selv. Derfor trenger den ingen oppsett per nettsted for å rydde en side du aldri har sett før. Og det er nettopp derfor den ikke kan returnere en strukturert katalog: det finnes ingen skjema, ingen felttabell, bare en vurdering av hva som teller som innhold. Det er en ekstraktor, ikke en parser du peker ut.
Den er også virkelig lett. Ren Python, ingen headless nettleser, ingen Chromium-binary som ligger og tar plass i hurtigbufferen, ingen Playwright-installasjon som lurer på deg ved første kjøring. Det høres kanskje lite ut helt til du skalerer utvinning over tusenvis av URL-er, og hver megabyte av avhengigheter og hver prosess du starter, er noe du må drifte. Dette er omtrent et prosjekt med 6,26k stjerner per 2026-07-09 (adbar/trafilatura) — et mye mindre repo enn nettleser- og crawler-rammeverkene det ofte sammenlignes med, noe som sier noe om omfanget, ikke om kvaliteten.
Oppsettet er den korte delen, og det er i seg selv vurderingen
Installeringen er én linje, og det er ingenting å advare om. Det er faktisk verdt å nevne. pip install trafilatura i et nytt virtualenv ga en ren pakkeinstallasjon på Python 3.14 — ingen nettleser å laste ned, ingen etterinstallasjonstrinn, ingen tung avhengighetsklynge å tråle gjennom. Jeg har anmeldt nok av disse bibliotekene til å sitte og vente på den andre skoen: nettleserpakken på 150 MB du oppdager ved første kjøring, den native utvidelsen som ikke vil kompilere, den ekstra [fetchers]-gruppen ingen nevnte. Med trafilatura kom aldri den andre skoen.
Versjonen pip ga meg (2.1.0) matcher den nåværende utgivelsen, publisert 2026-06-07, så ingen av tallene nedenfor har et lite «du testet en gammel versjon»-stempel. Det er ikke alltid slik i denne kategorien — mange av de tyngre verktøyene jeg har sett på, lå en hovedversjon bak da jeg kjørte dem. Her er testbygget og produksjonsutgivelsen det samme.
I praksis: hva ekstraktoren faktisk leverte
Jeg testet trafilatura mot filer laget for å treffe både styrken og begrensningen. Artikkeltesten er den som avgjorde inntrykket mitt.

Jeg tok en lokal artikkelfil og begravde innholdet i støy — en innloggingsprompt, en «Abonner»-oppfordring, navigasjonslenker og en copyright-footer, altså akkurat den typen standardtekst en naiv scraper drar med seg sammen med brødteksten. trafilatura returnerte tittelen pluss alle tre av tre avsnitt i brødteksten, og hver eneste unike standardmarkør — Login, Subscribe, Copyright — manglet i resultatet. I tillegg hentet den forfatter og dato korrekt fra sidens metadata. Resultatet kom ut som .txt, .md og .json fra ett eneste kall.

Det med flere formater fortjener et øyeblikk. Ett uttrekk kom ut som ren tekst, Markdown og JSON. Markdown-sporet er akkurat det «LLM-ready text»-steget alle jakter på nå: du mater inn en rotete side og får tilbake ren prosa med struktur bevart, klar til å sendes til en modell. trafilatura gjør det uten en eneste nettleser i løkken, som er en roligere vei til samme resultat enn nettleserdrevne verktøy som må spinne opp hele renderingsstakken for å produsere det.
Så den offentlige sjekken. Jeg pekte den mot en levende produktside — en Books to Scrape-produktside — og den returnerte 1 324 tegn med ren tekst pluss Markdown: beskrivelsesblokken, lesbar, uten sidepynt rundt. Og da jeg matet den med en side som svarte med HTTP 500, returnerte fetch_url None i stedet for å kaste en feil. Ingen krasj, ingen stack trace å fange opp. Den kjedelige, men riktige feilhåndteringen er nettopp det du vil ha i noe som kjører uten tilsyn på en tidsplan.
Forbeholdene
Tre stykker, og hvert av dem snevrer inn hvor verktøyet passer.

Først og viktigst: trafilatura er en innholdsekstraktor, ikke en strukturert scraper. Jeg kjørte den på en katalogtest med 12 produkter. Den returnerte alle 12 produktnavnene — som tekst — og nøyaktig 0 strukturerte rader (478 tegn med flat tekst). Navnene og prisene er med i resultatet; de er bare ikke felter. Hvis du trenger [{name, price, rating}, …], er dette feil verktøy, og ingen konfigurasjonsbryter endrer det. Det er et designvalg om hva verktøyet er til for, ikke en feil du skal melde inn.

For det andre: den render ikke JavaScript. Den konsumerer statisk HTML. Peker du den mot en klientrendret singel-side-app, får du det serveren sendte før JavaScript kjørte, noe som ofte ikke er særlig nyttig. Kombiner den med en renderer hvis målsidene dine er tunge på JS — trafilatura gjør ikke den halvdelen for deg, og den påstår heller ikke at den gjør det.
For det tredje, et forbehold om mitt eget bevisgrunnlag. Den offentlige uttrekkstesten over lente seg på en produktbeskrivelsesblokk, ikke en ekte nyhetsartikkel, fordi den offentlige sandkassen jeg brukte (toscrape-familien) bare består av kataloger og ingen nyhetssider. Det rene resultatet fra artikkelrengjøringen er fra en kontrollert lokal testfil. Jeg stoler på det resultatet — standardteksten ble tydelig og reproducerbart fjernet — men en produktside er ikke bevis på redaksjonelt nivå, så jeg kaller det ikke det.
For å lukke det gapet delvis kjørte jeg en egen, bevisst uten poengsetting, demonstrasjon på to ekte artikkelsider, ved å lese lagrede testfiler slik at kjøringen ble deterministisk. På Wikipedia-artikkelen «Web scraping» reduserte trafilatura brødteksten fra 230 049 byte rå HTML til 26 673 byte uttrukket innhold (et forhold mellom brødtekst og råinnhold på 0,116), og alle de fire kontrollerte markørene for sidepynt — «Jump to content», «Privacy policy», «Powered by MediaWiki», «This page was last edited» — var borte. På en arkivert Wikinews-artikkel gikk den fra 79 716 byte til 2 200 (et forhold på 0,028), med alle fem kontrollerte markører fjernet. Tittel, dato og vertsnavn kom tilbake utfylt på begge; forfatter og nettstednavn kom tilbake som null på begge, og jeg rapporterer de bommene i stedet for å skjule dem. To ting å holde klart her: byte-forholdet måler hvor mye markup og sidepynt som ble strippet bort, ikke uttrekksnøyaktighet, og begge sidene er fra samme MediaWiki-familie, så dette er en demonstrasjon på ekte artikler, ikke et representativt utvalg.
Når det gjelder nøyaktighet spesifikt, peker jeg på ekstern dokumentasjon i stedet for å late som om jeg målte det selv. trafilatura publiserer sin egen evaluering-side, og den oppgir den høyeste open-source F1-scoren (rundt 0,945) i ScrapingHub article-extraction benchmark sammenlignet med verktøy som readability-lxml (~0,887). To ærlige presiseringer om det tallet: det kommer fra den benchmarken, ikke fra min test, og den rapporterte ~0,945-scoren er knyttet til en eldre 0.5.1-linje i kilden, ikke 2.1.0-versjonen jeg kjørte. Se på det som ekstern benchmark-dokumentasjon for hvorfor verktøyet har sitt rykte, ikke som en måling fra denne anmeldelsen.
Fordeler og ulemper
Fordeler:
- Reneste artikkeluttrekk i mitt utvalg — tittel pluss alle 3 av 3 avsnitt, og hver standardmarkør (Login/Subscribe/Copyright) fjernet.
- Henter forfatter- og datometadata korrekt sammen med brødteksten.
- Flere utdataformater fra ett kall: txt, Markdown og JSON — Markdown-sporet er et reelt LLM-ready tekststeg.
- Lett, rent Python-oppsett — ingen nettleser, ingen binær nedlasting, ingen tung avhengighetsvegg.
- Skånsom feil:
fetch_urlreturnererNoneved HTTP 500 i stedet for å kaste unntak. - Testet versjon er lik gjeldende utgivelse (2.1.0) — ingen versjonsforskyvning.
- Apache-2.0-lisens — liberal og kommersielt vennlig.
Ulemper:
- Ikke en strukturert scraper: katalogtesten ga 12 navn som tekst og 0 typede rader. Ingen skjema, ingen felter.
- Ingen JavaScript-rendering — kun statisk HTML; trenger en separat renderer for klientside-sider.
- Metadata er delvis på noen nettsteder: forfatter og nettstednavn kom tilbake som null på begge ekte artikkelfiler.
- Min offentlige prosa-test brukte en produktbeskrivelsesblokk, ikke en ekte nyhetsartikkel.
- Den innebygde crawl-/sitemap-spideren og CSV/XML-utdataene ble ikke brukt i denne runden, så jeg gjør ingen påstander om dem.
Hvem den passer for — og hvem som bør styre unna
trafilatura er tydelig rettet mot deg som tenker: «Jeg har URL-er, og jeg vil ha ren artikkeltekst, uten navigasjonsfelt, cookie-banner og nyhetsbrevmas.» Å bygge et tekstkorpus, mate sider til en modell, arkivere lesbart innhold, kjøre NLP på nettartikler — det er banen, og verktøyet er veldig bra der. Hvis du vil ha et lett, nettleserfritt steg som gjør rotete HTML om til ren Markdown eller JSON, er det bare å installere og komme videre med dagen.
Styr unna hvis det du egentlig trenger er strukturert uttrekk: produktlinjer med priser, typede poster, key: value-felt. Den gir deg tekst, ikke tabeller — katalogtesten hentet navnene, men ikke radene, og det kommer ikke til å endre seg. Styr unna også hvis målsidene dine rendrer innholdet i nettleseren og du ikke vil koble på en separat renderer, siden trafilatura leser statisk HTML og stopper der. Feilmodusen er ikke dramatisk; du får bare et tomt eller tynt resultat og lurer på hvorfor. Match verktøyet med jobben — artikkeltekst, ja; strukturert JSON eller JS-rendrede sider, se andre steder.
Alternativer, og hvor Thunderbit passer inn
Prøv Thunderbit for utvinning av nettdata
La oss starte med den rettferdige rammen. trafilatura er et gratis, Apache-2.0-lisensiert bibliotek du kjører selv. Du eier koden, det koster ingenting per side, og det er lett nok til å putte inn i enhver pipeline uten operasjonell friksjon. For den spesifikke jobben med å rydde en artikkel ned til ren tekst er den kombinasjonen vanskelig å slå, og en betalt tjeneste endrer ikke det regnestykket.
Sammenligningen blir først interessant ved grensen trafilatura bevisst setter: strukturerte data og JavaScript. Det er de to tingene den ikke gjør, og tilfeldigvis er det også de to tingene en styrt uttrekks-API er laget for å håndtere. Der ligger Thunderbit-utviklerstakken — på den andre siden av den linjen, som et supplement til trafilatura heller enn en konkurrent om statisk HTML-artikkeltekst. /distill-endepunktet gjør samme type jobb som trafilatura gjør, fra side til ren LLM-klar Markdown, men med JavaScript-rendering håndtert på serversiden, som er akkurat den halvdelen trafilatura hopper over. Og /extract gir strukturert JSON mot et skjema du definerer, altså den halvdelen trafilatura bevisst avviser: katalogen som kom tilbake som 478 tegn flat tekst er et tilfelle der du ville brukt /extract i stedet. For AI-agenter og kodeassistenter finnes det en MCP-server, der verktøyet for å foreslå felter kan prøves gratis, og en CLI via npx @thunderbit/thunderbit-cli for terminal, CI og cron-arbeid. Den kjører på samme motor som Thunderbit Chrome-utvidelsen brukt av over 100 000 mennesker, så også den ikke-tekniske veien finnes, men for dette publikumet er API, MCP og CLI de relevante inngangene.
Så den reelle avveiningen handlet aldri om kvaliteten på tekstuttrekket — trafilatura vinner der på sidene den er laget for, og det sier jeg helt tydelig. Det handler om omfang og hvem som skal kjøre nettleseren. Trenger du ren artikkeltekst fra statisk HTML, selvhostet, til null kost per kall? trafilatura er det lettere, skarpere verktøyet, punktum. Trenger du strukturert JSON mot et skjema, eller renderes siden først etter at JavaScript kjører? Da er det den styrte stakkens bane, og det er ikke en kamp trafilatura prøver å ta. Prisinformasjon for den styrte løsningen finner du på Thunderbit sin prisside hvis du vurderer kost per side opp mot å drifte en renderer selv.
Hvis du vurderer alternativer på tvers av hele kategorien, har jeg en løpende sammenligning av webskrapeverktøyene jeg faktisk bruker som setter slike biblioteker ved siden av nettleserdrevne og styrte alternativer.
Konklusjon
Bør du bruke trafilatura? Ja — hvis jobben din er å gjøre rotete HTML om til ren artikkeltekst, og du er tydelig på de to tingene den bevisst ikke gjør. Den strippet en side for hver standardmarkør og returnerte tittel, alle de tre avsnittene i brødteksten, samt forfatter og dato, fra en enkelt lett installasjon uten nettleser i sikte. Den kan gi deg txt, Markdown og JSON samtidig, noe som gjør den til et legitimt LLM-ready tekststeg. I et felt som er overbevist om at du trenger en headless nettleser og en AI-crawler for å få gjort noe som helst, var det verktøyet som ikke åpner noen nettleser som ryddet opp slik jeg ønsket.
Men størrelsen må være riktig. Det er en ekstraktor, ikke en strukturert scraper — katalogen kom tilbake som 12 navn i tekst og 0 rader. Den leser statisk HTML og kjører ikke JavaScript. Metadatauttrekket er sterkt på noen sider og delvis på andre (forfatter og nettstednavn ble null på begge ekte artikkelfilene jeg sjekket). Og min offentlige prosa-test lente seg på en produktbeskrivelsesblokk, ikke en ekte nyhetsartikkel, så se på påstanden om redaksjonelt nivå som lovende, ikke endelig avgjort. Innenfor de rammene gjør trafilatura sin ene jobb renere enn de tyngre verktøyene jeg sammenlignet den med — og den gjør det med nesten ingenting installert.
Prøv Thunderbit for utvinning av nettdata Get Started Free
Vanlige spørsmål
Hva henter trafilatura egentlig ut fra en side? Hovedinnhold — artikkelteksten pluss tittelen, og metadata som forfatter og dato — med standardtekst fjernet. I testen min returnerte den tittelen og alle 3 av 3 avsnitt fra en side pakket inn i navigasjon, innlogging, abonnement og copyright-støy, og hver av disse markørene manglet i resultatet. Den bestemmer hva som teller som innhold ved hjelp av heuristikk, så den trenger ingen selektorer per nettsted for å rydde en side den ikke har sett før.
Kan trafilatura skrape en produktkatalog til strukturerte rader? Nei. Det er en innholdsekstraktor, ikke en strukturert scraper. På en katalogtest med 12 produkter returnerte den alle 12 produktnavnene som flat tekst (478 tegn) og 0 strukturerte rader — navnene finnes i resultatet, men de er ikke felter. Hvis du trenger typede poster som navn/pris/vurdering, bruk heller en selektorbasert parser eller en schema-drevet uttrekks-API.
Renderer trafilatura JavaScript? Nei. Den bruker kun statisk HTML. Peker du den mot en side som rendres i nettleseren, får du det serveren sendte før JavaScript kjørte, som ofte ikke er innholdet du egentlig er ute etter. Kombiner den med en separat renderer hvis målsidene dine er tunge på JS; trafilatura leser det statiske dokumentet og stopper der.
Er trafilatura vanskelig å installere?
Nei — det er et av de virkelige salgsargumentene. pip install trafilatura ga en ren pakkeinstallasjon i et nytt virtualenv på Python 3.14, uten nettlesernedlasting, uten etterinstallering og uten skjulte ekstra-grupper. Versjonen pip installerte (2.1.0) er lik gjeldende utgivelse, publisert 2026-06-07.
Hvor nøyaktig er trafilatura sammenlignet med andre ekstraktorer? Jeg benchmarket ikke nøyaktighet i denne anmeldelsen, så jeg viser til den eksterne dokumentasjonen i stedet. trafilatura publiserer en evaluering-side, og den oppgir den høyeste open-source F1-scoren (rundt 0,945) i ScrapingHub article-extraction benchmark sammenlignet med verktøy som readability-lxml (~0,887). Merk at tallet kommer fra den benchmarken på en eldre 0.5.1-linje, ikke 2.1.0-versjonen jeg testet — så les det som ekstern dokumentasjon for verktøyets rykte, ikke som en måling fra denne artikkelen.


