מחלץ המאמרים שלא פותח דפדפן — ועדיין ניקָה לי את דפי הבדיקה

עודכן לאחרונה ב- July 17, 2026
מחלץ המאמרים שלא פותח דפדפן — ועדיין ניקָה לי את דפי הבדיקה
סיכום AI
This trafilatura review positions the library as a focused article-content extractor rather than a browser, crawler, or structured scraper. It tests how well trafilatura removes boilerplate from static HTML while preserving title, author, date, and body paragraphs. The review also covers multi-format output, lightweight setup, speed, failure boundaries, and why the tool is not suited to product catalogs or arbitrary field extraction. It is a useful benchmark for teams that need clean article text for search, analysis, or LLM pipelines without installing a headless browser or writing per-site selectors.

רוב כלי ה-scraping שמושכים תשומת לב השנה רוצים להפעיל דפדפן. trafilatura לא. זו ספריית Python טהורה שקוראת HTML סטטי, מזהה אילו בלוקים הם באמת גוף המאמר, וזורקת את השאר. המשימה הצרה הזו — חילוץ התוכן המרכזי — היא כל העניין, וזה משהו שהספרייה עושה עוד הרבה לפני ש־"LLM-ready markdown" היה מונח שמישהו בכלל השתמש בו.

הרצתי את גרסה 2.1.0 על סט קבוע של fixtures ב־Python 3.14, ומבחן המאמר הוא זה שנשאר איתי. עטפתי גוף טקסט אמיתי בכל רעשי הדף הרגילים — בקשת התחברות, הודעת "Subscribe", קישורי ניווט, כותרת תחתונה עם זכויות יוצרים — ו־trafilatura החזירה את הכותרת, את כל שלושת פסקאות הגוף, את המחבר ואת התאריך, בלי אף אחד מסימני התבנית המיותרים האלה. בלי דפדפן, בלי כללים ייעודיים לכל אתר, קריאת פונקציה אחת. אבל יש כאן קאץ', וכדאי להכיר אותו: ברגע שמבקשים ממנה משהו מובנה, היא עוצרת. עוד על זה בהמשך (זו בחירה עיצובית, לא תקלה).

מה זה trafilatura, ואיזו הנחה כדאי לשחרר

השורה הרשמית מתארת אותה כ־"Python & command-line tool to gather text and metadata on the Web: crawling, scraping, extraction", עם פלט כ־CSV, JSON, HTML, Markdown, TXT או XML. זו הגדרה רחבה, אבל היא מחמיצה את מה שבאמת מבדיל את הכלי. הערך לא נמצא בעזרי ה-crawl או בששת פורמטי הפלט. הוא ב-content extraction: מסמך HTML נכנס, טקסט המאמר המרכזי יוצא, וכל ה-chrome של הדף נעלם.

הנה המודל המנטלי, כי הוא מסביר גם את העוצמה וגם את הגבול במכה אחת. רוב ה-scrapers שמכוונים לדף עובדים לפי סלקטורים. אתה אומר להם "תביאו את האלמנט עם המחלקה product-price", והם מחזירים את מה שיושב בכתובת הזו. trafilatura עובדת הפוך. היא קוראת את כל המסמך ומחליטה אילו בלוקים הם המאמר ואילו הם boilerplate, בעזרת היוריסטיקות של תוכן במקום סלקטור שכתבת ידנית. לכן היא לא צריכה שום הגדרה ייעודית לאתר כדי לנקות דף שמעולם לא ראתה. ובדיוק בגלל זה היא גם לא יכולה להחזיר קטלוג מובנה: אין סכימה, אין מיפוי שדות — רק הכרעה מה נחשב תוכן. זו מחלצת, לא parser שמכוונים.

היא גם באמת קלה. Python טהור, בלי headless browser, בלי בינארי של Chromium שמחכה במטמון, בלי התקנת Playwright שתפתיע אותך בהרצה הראשונה. זה נשמע שולי עד שמריצים חילוץ על אלפי כתובות URL, וכל מגה-בייט של תלות וכל subprocess הם משהו שצריך לתפעל. נכון ל־2026-07-09 מדובר בפרויקט של כ־6.26k כוכבים (adbar/trafilatura) — ריפו קטן בהרבה ממסגרות הדפדפן וה-crawler שאליהן הוא נוטה להיכנס באותה נשימה, וזה בעיקר מידע על ההיקף שלו, לא ביקורת על האיכות.

ההתקנה היא החלק הקצר — וזה בעצמו כבר סוג של ביקורת

ההתקנה היא שורת פקודה אחת, ואין שום אזהרה מיוחדת — וזה בפני עצמו ראוי לציון. pip install trafilatura בתוך virtualenv טרי משך ב־Python 3.14 עץ חבילות נקי אחד בלבד — בלי דפדפן להוריד, בלי שלב post-install, בלי חומת תלויות שמרקיעה שחקים. ראיתי מספיק ספריות כאלה כדי לשבת ולחכות לנעל השנייה: חבילת הדפדפן של 150MB שמתגלה רק בהרצה הראשונה, ה-native extension שלא מתקמפל, קבוצת [fetchers] הנוספת שאף אחד לא הזכיר. עם trafilatura, הנעל השנייה לא נפלה.

הגרסה שקיבלתי מ־pip (2.1.0) תואמת לגרסה הנוכחית, שפורסמה ב־2026-06-07, כך שכל המספרים בהמשך נקיים מכוכבית של "בדקת משהו מיושן". זה לא תמיד נכון בקטגוריה הזו — הרבה מהכלים הכבדים שבחנתי כבר היו בפיגור של גרסה גדולה כשהרצתי אותם. כאן ה-build שנבדק וה-build שבאמת מופץ הם אותו הדבר.

Hands-on: מה המחלץ באמת החזיר

הרצתי את trafilatura על fixtures שנבנו כדי לפגוע גם בנקודת החוזק שלה וגם בקיר שלה. מבחן המאמר הוא זה שקבע את ההתרשמות שלי ממנה.

trafilatura boilerplate cleanup

לקחתי fixture מקומי של מאמר וקברתי את התוכן האמיתי תחת רעש — בקשת התחברות, קריאה לפעולה של "Subscribe", קישורי ניווט, ותחתית עם זכויות יוצרים, בדיוק סוג ה-boilerplate ש-scraper נאיבי סוחב יחד עם התוכן. trafilatura החזירה את הכותרת יחד עם כל שלוש פסקאות הגוף, וכל סימני ה-boilerplate הייחודיים — Login, Subscribe, Copyright — נעדרו מהפלט. בנוסף לטקסט, היא שלפה נכון גם את המחבר ואת התאריך מתוך מטא-דאטת הדף. התוצאה יצאה ב־.txt, ב־.md וב־.json מקריאה אחת.

trafilatura title and 3/3 paragraphs retained

הפרט הרב-פורמטי הזה חשוב. חילוץ אחד יצא כטקסט פשוט, כ־Markdown, וכ־JSON. מסלול ה־Markdown הוא בדיוק שלב ה־"LLM-ready text" שכולם מחפשים עכשיו: מכניסים דף מבולגן, מקבלים פרוזה נקייה עם מבנה שנשמר, ומעבירים למודל. trafilatura עושה את זה בלי דפדפן בכלל בלולאה, וזו דרך שקטה יותר להגיע לאותו פלט לעומת הכלים שמריצים סט שלם של rendering כדי לייצר אותו.

ואז הבדיקה הציבורית. כיוונתי אותה לעמוד מוצר חי — עמוד מוצר של Books to Scrape — והיא החזירה 1,324 תווים של טקסט נקי ועוד Markdown: בלוק התיאור, קריא, בלי chrome של הדף מסביבו. וכששלחתי לה דף שהחזיר HTTP 500, הפונקציה fetch_url החזירה None במקום לזרוק שגיאה. בלי קריסה, בלי stack trace שצריך ללכוד. התנהגות הכשל השקטה והנכונה הזו היא בדיוק מה שרוצים בכלי שרץ ללא השגחה לפי לוח זמנים.

הסתייגויות

שלוש, וכל אחת מהן מצמצמת את המקום של הכלי.

trafilatura catalog text-only boundary

ראשית והכי חשוב: trafilatura היא מחלצת תוכן, לא scraper מובנה. הרצתי אותה על fixture של קטלוג עם 12 מוצרים. היא החזירה את כל 12 שמות המוצרים — כטקסט — ו־0 שורות מובנות (478 תווים של טקסט שטוח). השמות והמחירים כן נמצאים בפלט; פשוט לא כשדות. אם מה שאתם צריכים הוא [{name, price, rating}, …], זה לא הכלי המתאים, ואף דגל קונפיגורציה לא ישנה את זה. זו החלטת תכנון לגבי מה הכלי אמור לעשות, לא באג לדווח עליו.

trafilatura no JavaScript render boundary

שנית: היא לא מרנדרת JavaScript. היא צורכת HTML סטטי. אם מפנים אותה לאפליקציית SPA שמרונדרת בצד הלקוח, מקבלים את מה שהשרת שלח לפני שה־JS רץ — ולרוב זה לא משהו שימושי. אם היעדים שלכם כבדים ב־JS, צריך לצרף renderer נפרד; trafilatura לא תעשה את החצי הזה בשבילכם, והיא גם לא טוענת שהיא תעשה.

שלישית, הסתייגות לגבי הראיות שלי עצמן. בדיקת החילוץ הציבורית למעלה נשענה על בלוק תיאור מוצר, לא על מאמר חדשות אמיתי, כי ארגז החול הציבורי שבו השתמשתי (משפחת toscrape) מורכב כולו מקטלוגים בלי עמודי חדשות. התוצאה הנקייה של ניקוי מאמרים מגיעה מ־fixture מקומי מבוקר. אני סומך על התוצאה הזו — הסרת ה-boilerplate ברורה וניתנת לשחזור — אבל עמוד מוצר אינו הוכחה לחילוץ ברמת חדר חדשות, ולכן לא אמסגר אותה ככזו.

כדי לסגור חלקית את הפער הזה, הרצתי הדגמה נפרדת, מכוונת ולא מדורגת, על שני עמודי מאמר אמיתיים, תוך קריאה ל־fixtures שמורים כך שההרצה דטרמיניסטית. על המאמר של Wikipedia בנושא "Web scraping", trafilatura הורידה את גוף העמוד מ־230,049 בתים של HTML גולמי ל־26,673 בתים של תוכן מחולץ (יחס גוף-לגולמי של 0.116), וכל ארבעת סימני ה-chrome שנבדקו — "Jump to content," "Privacy policy," "Powered by MediaWiki," "This page was last edited" — נעלמו. על מאמר ארכיוני של Wikinews, היא ירדה מ־79,716 בתים ל־2,200 (יחס 0.028), וכל חמשת הסימנים שנבדקו הוסרו. הכותרת, התאריך וה-hostname חזרו מלאים בשני המקרים; המחבר ו-sitename חזרו כ־null בשניהם, ואני מציין את ההחמצות האלה במקום להסתיר אותן. שני דברים חשובים כאן: יחס הבתים מודד כמה markup ו-chrome הוסרו, לא את דיוק החילוץ, ושני העמודים שייכים לאותה משפחת MediaWiki, כך שזו הדגמה על מאמרים אמיתיים, לא קורפוס מייצג.

לגבי דיוק ספציפית, אתייחס לראיות חיצוניות במקום להעמיד פנים שמדדתי אותו בעצמי. ל־trafilatura יש דף הערכה, והיא מציגה את ציון ה-F1 הפתוח הגבוה ביותר (בערך 0.945) ב־ScrapingHub article-extraction benchmark מול כלים כמו readability-lxml (בערך 0.887). שתי הסתייגויות הוגנות לגבי המספר הזה: הוא מגיע מהבנצ'מרק הזה, לא מהבדיקות שלי, והערך המדווח של ~0.945 קשור לשורת 0.5.1 ישנה יותר במקור, לא ל־2.1.0 שהרצתי. אז כדאי לקרוא לזה כראיית benchmark חיצונית שמסבירה למה לכלי יש מוניטין של מחלץ טוב, לא כמדידה מתוך הסקירה הזו.

יתרונות וחסרונות

יתרונות:

  • חילוץ מאמרים נקי ביותר בסט שלי — כותרת ועוד 3 מתוך 3 פסקאות, עם הסרה מלאה של כל סימני ה-boilerplate (Login/Subscribe/Copyright).
  • שולפת נכון גם מטא-דאטה של מחבר ותאריך לצד גוף הטקסט.
  • פלט בכמה פורמטים מקריאה אחת: txt, Markdown ו־JSON — וה־Markdown הוא שלב אמיתי של text מוכן ל־LLM.
  • התקנה קלה וקלת משקל, ב־Python טהור — בלי דפדפן, בלי הורדת בינארי, בלי חומת תלויות.
  • כשל חינני: fetch_url מחזירה None על HTTP 500 במקום לזרוק חריגה.
  • הגרסה שנבדקה זהה לגרסה הנוכחית (2.1.0) — בלי פער גרסאות.
  • ברישיון Apache-2.0 — רישיון מקל ונוח לשימוש מסחרי.

חסרונות:

  • לא scraper מובנה: מבחן הקטלוג החזיר 12 שמות כטקסט ו־0 שורות מטיפוס מובנה. אין סכימה, אין שדות.
  • אין רינדור של JavaScript — HTML סטטי בלבד; צריך renderer נפרד עבור דפים שמרונדרים בצד הלקוח.
  • מטא-דאטה חלקי באתרים מסוימים: מחבר ו-sitename חזרו כ־null בשני ה-fixtures של מאמרים אמיתיים.
  • מבחן הפרוזה הציבורי שלי נשען על בלוק תיאור מוצר, לא על מאמר חדשות אמיתי.
  • סורק ה-crawl/sitemap המובנה ופורמטי היצוא CSV/XML לא נבחנו בסבב הזה, ולכן אין לי טענות לגביהם.

למי זה מתאים — ומי עדיף שיוותר

trafilatura מכוונת בדיוק לאדם שהבעיה שלו היא "יש לי URLs ואני רוצה את טקסט המאמר הנקי, בלי סרגל ניווט, בלי באנר עוגיות ובלי נדנוד הרשמה לניוזלטר". בניית קורפוס טקסט, הזנת דפים למודל, ארכוב תוכן קריא, הרצת NLP על מאמרי רשת — זה המסלול שלה, והיא טובה בו מאוד. אם אתם רוצים שלב קל, בלי דפדפן, שהופך HTML מבולגן ל־Markdown או JSON נקי — תתקינו אותה ותמשיכו הלאה.

כדאי לוותר עליה אם מה שבאמת דרוש לכם הוא חילוץ מובנה: שורות מוצרים עם מחיר, רשומות מטיפוס מוגדר, שדות key: value. היא נותנת טקסט, לא טבלאות — מבחן הקטלוג החזיר את השמות אבל לא את השורות, וזה לא ישתנה. כדאי לוותר גם אם היעדים שלכם מרנדרים תוכן בדפדפן ואתם לא מוכנים לצרף renderer נפרד, כי trafilatura קוראת HTML סטטי ועוצרת שם. כשלון לא דרמטי; פשוט מקבלים תוצאה רזה או ריקה ותוהים למה. תתאימו את הכלי למשימה — טקסט מאמרים, כן; JSON מובנה או דפים שמרונדרים ב־JS, חפשו משהו אחר.

חלופות, כולל איפה Thunderbit משתלב

נסו את Thunderbit לחילוץ נתוני רשת

קודם כל, המסגור ההוגן. trafilatura היא ספרייה חינמית, בקוד פתוח ברישיון Apache-2.0, שאתם מריצים בעצמכם. הקוד שלכם, עלות אפסית לכל דף, וקלה מספיק כדי להיטמע בכל pipeline בלי עומס תפעולי. למשימה הספציפית של ניקוי מאמר לטקסט נקי, קשה לנצח את השילוב הזה, ושירות בתשלום לא משנה את זה.

ההשוואה נעשית מעניינת באמת בגבול ש־trafilatura מציבה בכוונה: נתונים מובנים ו־JavaScript. אלו שני הדברים שהיא לא עושה, ודווקא אלה שני הדברים ש־managed extraction API בנוי לכסות. שם נמצאת ערימת הפיתוח של Thunderbit — בצד השני של הקו הזה, כמשלים ל־trafilatura ולא כמתחרה שלה על טקסט מאמרים מ־HTML סטטי. נקודת הקצה /distill עושה את אותה צורת עבודה ש־trafilatura עושה, דף אל Markdown נקי מוכן ל־LLM, אבל עם רינדור JavaScript שמטופל בצד השרת — בדיוק החצי ש־trafilatura מדלגת עליו. ו־/extract מחזיר JSON מובנה לפי סכימה שאתם מגדירים, שזה החצי ש־trafilatura מסרבת לו מטעמי תכנון: הקטלוג שחזר כ־478 תווים של טקסט שטוח הוא בדיוק המקרה שבו הייתם פונים ל־/extract במקום. עבור AI agents ועוזרי קוד יש גם שרת MCP, עם כלי field-suggestion שאפשר לנסות בחינם, וגם CLI דרך npx @thunderbit/thunderbit-cli לעבודה בטרמינל, ב־CI וב־cron. הוא רץ על אותו מנוע כמו Thunderbit Chrome Extension שבו משתמשים יותר מ־100,000 איש, כך שגם המסלול הלא-טכני קיים, אבל לקהל הזה ה־API, ה־MCP וה־CLI הם הממשקים הרלוונטיים.

אז מסכת הפשרה האמיתית מעולם לא הייתה איכות חילוץ הטקסט — trafilatura מנצחת שם על הדפים שבשבילם היא נבנתה, ואומר זאת בפשטות. זה עניין של היקף ושל מי מפעיל את הדפדפן. צריכים טקסט מאמר נקי מ־HTML סטטי, ב־self-hosted, בלי עלות לכל קריאה? trafilatura היא הכלי הקל והחד יותר, חד משמעית. צריכים JSON מובנה לפי סכימה, או שהדף נטען רק אחרי JavaScript? זה הצד של ה־managed stack, וזו לא מלחמה ש־trafilatura מנסה לנהל. התמחור בצד המנוהל נמצא ב־עמוד המחירים של Thunderbit אם אתם משווים בין עלות לכל דף לבין תפעול renderer בעצמכם.

אם אתם בוחנים חלופות לאורך כל הקטגוריה, אני מחזיק השוואה מתעדכנת של כלי ה-web scraping שאני באמת משתמש בהם, שממקמת ספריות כמו זו לצד החלופות המנוהלות והמבוססות דפדפן.

פסק דין

אז האם כדאי להשתמש ב־trafilatura? כן — אם המשימה שלכם היא להפוך HTML מבולגן לטקסט מאמר נקי, ואתם מבינים היטב את שני הדברים שהיא בכוונה לא עושה. היא הסירה מדף כל סימן ל-boilerplate והחזירה את הכותרת, את כל שלוש פסקאות הגוף, ואת המחבר והתאריך — מהתקנה קלה אחת, בלי דפדפן באופק. היא מפיקה יחד txt, Markdown ו־JSON, מה שהופך אותה לשלב לגיטימי של text מוכן ל־LLM. בתחום שמשוכנע שחייבים headless browser ו־AI crawler כדי לעשות משהו, הכלי שלא פותח דפדפן הוא זה שעשה את הניקוי שחשוב לי.

רק צריך למדוד אותה נכון. זו מחלצת, לא scraper מובנה — הקטלוג חזר כ־12 שמות בטקסט ו־0 שורות. היא קוראת HTML סטטי ולא מריצה JavaScript. חילוץ המטא-דאטה שלה חזק בחלק מהדפים וחלקי באחרים (author ו-sitename חזרו כ־null בשני fixtures של מאמרים אמיתיים שבדקתי). ובדיקת הפרוזה הציבורית שלי נשענה על בלוק תיאור מוצר, לא על מאמר חדשות אמיתי, אז צריך להתייחס לטענה ברמת חדר חדשות כאל מבטיחה ולא סגורה. בתוך הגבולות האלה, trafilatura עושה את העבודה היחידה שלה טוב יותר מהכלים הכבדים שהשוויתי אליהם — והיא עושה את זה עם כמעט שום דבר מותקן.

נסו את Thunderbit לחילוץ נתוני רשת Get Started Free

שאלות נפוצות

מה trafilatura באמת מחלצת מדף? את התוכן המרכזי — גוף המאמר, הכותרת, ומטא-דאטה כמו מחבר ותאריך — כשה-boilerplate מוסר. בבדיקה שלי היא החזירה את הכותרת ואת כל 3 מתוך 3 פסקאות הגוף מדף שהיה עטוף בניווט, התחברות, הרשמה וזכויות יוצרים, וכל אחד מהסימנים האלה נעדר מהפלט. היא מחליטה מה נחשב תוכן בעזרת היוריסטיקות, ולכן לא צריך סלקטורים ייעודיים לכל אתר כדי לנקות דף שלא ראתה קודם.

האם trafilatura יכולה לחלץ קטלוג מוצרים לשורות מובנות? לא. זו מחלצת תוכן, לא scraper מובנה. על fixture של קטלוג עם 12 מוצרים היא החזירה את כל 12 שמות המוצרים כטקסט שטוח (478 תווים) ו־0 שורות מובנות — השמות נמצאים בפלט, אבל הם לא שדות. אם אתם צריכים רשומות מטיפוס מוגדר כמו name/price/rating, עדיף להשתמש ב-parser מבוסס סלקטורים או ב־API לחילוץ מבוסס סכימה.

האם trafilatura מרנדרת JavaScript? לא. היא צורכת HTML סטטי בלבד. אם מפנים אותה לדף שמרונדר בצד הלקוח, מקבלים את מה שהשרת שלח לפני שרץ ה־JavaScript, ולרוב זה לא התוכן שאתם מחפשים. אם היעדים שלכם כבדים ב־JS, צריך לצרף renderer נפרד; trafilatura קוראת את המסמך הסטטי ועוצרת שם.

האם קשה להתקין את trafilatura? לא — זו אחת מנקודות המכירה החזקות שלה. pip install trafilatura משך עץ חבילות נקי אחד בלבד בתוך virtualenv טרי ב־Python 3.14, בלי הורדת דפדפן, בלי שלב post-install ובלי קבוצת extras נסתרת. הגרסה ש־pip התקין (2.1.0) זהה לגרסה הנוכחית, שפורסמה ב־2026-06-07.

כמה מדויקת trafilatura לעומת מחלצים אחרים? לא ביצעתי בנצ'מרק לדיוק במסגרת הסקירה הזו, אז אתייחס לראיות החיצוניות במקום. ל־trafilatura יש דף הערכה, והיא מדווחת על ציון ה-F1 הפתוח הגבוה ביותר (בערך 0.945) ב־ScrapingHub article-extraction benchmark מול כלים כמו readability-lxml (בערך 0.887). חשוב לשים לב שהמספר הזה מגיע מהבנצ'מרק הזה על שורת 0.5.1 ישנה יותר, לא על 2.1.0 שבדקתי — אז צריך לקרוא אותו כראיה חיצונית למוניטין של הכלי, לא כמדידה מתוך המאמר הזה.

Ke
Ke
CTO ב-Thunderbit | מדען נתונים בכיר ומומחה ב-ML עם כמעט עשור של ניסיון בלמידת מכונה ובמדע הנתונים, קה שן הוא בוגר אוניברסיטת קולומביה ולשעבר מדען נתונים בכיר ב-Walmart Labs. עם מומחיות עמוקה ומוכרת בקרב עמיתים ב-Python, R, Java וסטטיסטיקה, הוא משתף תובנות מוכחות-בקרב על המעבר מאלגוריתמי AI מורכבים מתיאוריה לארכיטקטורה ברמת production.
תוכן עניינים

גרדו דף אינטרנט פשוט על ידי בקשה

תגידו מה צריך באנגלית פשוטה. או אפילו לא צריך להגיד כלום.

נסו את Thunderbit חינם
חילוץ נתונים באמצעות AI
העבירו נתונים בקלות ל-Google Sheets, Airtable או Notion
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week