newspaper4k’nin 22/22 Kontrollü Makale Örneğinde Ürettiği Çıktı

Son güncelleme: August 17, 2026
newspaper4k’nin 22/22 Kontrollü Makale Örneğinde Ürettiği Çıktı
AI Özeti
Etiketlenmiş, makale odaklı bir örnek setinde newspaper4k 22 örneğin tamamında çıktı üretti, puanlanan makale birimlerinin %98,65’ini geri aldı ve etiketlenmiş hiçbir boilerplate token’ı içermedi. Bu üç ölçüt, bu testin öncelikleri açısından onu güçlü bir aday yapıyor; ancak evrensel bir kazanan tanımlamaz. Bu sette bu üç gözlemi aynı anda birleştiren başka bir araç yoktu. Mozilla Readability puanlanan içerik birimlerinin tamamını geri aldı ama daha fazla etiketlenmiş boilerplate içerdi; goose3 etiketlenmiş boilerplate içermedi fakat iki kez boş string döndürdü. Farklı karar kuralları başka bir kütüphaneyi tercih edebilir.

Etiketlenmiş, makale odaklı bir örnek setinde newspaper4k 22 örneğin tamamında çıktı üretti, puanlanan makale birimlerinin %98,65’ini geri aldı ve etiketlenmiş hiçbir şablon metin (boilerplate) token’ı içermedi. Bu üç ölçüt, bu testin öncelikleri açısından onu güçlü bir aday yapıyor; ancak bunlar evrensel bir kazanan tanımlamaz.

Bu sette bu üç gözlemi aynı anda birleştiren başka bir araç yoktu. Mozilla Readability puanlanan içerik birimlerinin tamamını geri aldı ama daha fazla etiketlenmiş boilerplate içerdi; goose3 etiketlenmiş boilerplate içermedi fakat iki kez boş string döndürdü. Farklı karar kuralları başka bir kütüphaneyi tercih edebilir.

Yaygın varsayılanlardan biri için, dağıtımdan önce özellikle dikkat etmek gerekir.

newspaper4k nedir?

newspaper4k, kendisi de orijinal newspaper projesinin Python 3 devamı olan newspaper3k’nin bakımı sürdürülen bir çatallanmış sürümüdür. Bu soy ağacı önemlidir; çünkü çevrim içi yardım ararken bulacağınız örneklerin çoğu atasıyla ilgilidir ve API’nin bir kısmı yer değiştirmiştir.

Resmî kaynak: newspaper4k’nin resmî deposu.

Sistem diyagramı: Makale Çıkarma İş Akışı

Bu kütüphaneyi yanlış kullanmanın en yaygın yollarından biri set_html() çağırmaktır. Böyle bir yöntem yok. HTML, download() üzerinden içeri alınır:

from newspaper import Article
a = Article(url="https://example.com/story")
a.download(input_html=html)     # set_html() değil
a.parse()
text = a.text

İlk denememde bunu yanlış yaptım ve hatanın bende olup olmadığını kontrol etmeden kütüphaneyi 22 örneğin 0’ı olarak puanladım. Hata bendeydi.

Geri dönen şey yalnızca düz metin değildir. Article nesnesi text, title, authors, publish_date, top_image, images, movies, meta_description, meta_lang, tags ve article_html gibi alanlar sunar. keywords ve summary için ise aşağıda açıklanan isteğe bağlı NLP kurulumu ve korpus hazırlığı gerekir. Alanların kapsamı envanterlendi, ancak meta verilerin doğruluğu puanlanmadı.

Test edilen sürüm: 0.9.6, MIT lisanslı, 1.135 GitHub yıldızı ve depo gönderim tarihi 2026-07-31. Bu tarihli etkinlik, bakım sağlığının tam bir değerlendirmesi değil, yalnızca bir anlık görüntüdür. Python 3.14.2.

Sonuç

KütüphaneMakale geri çağırma (22/22)Boilerplate sızıntısıİçerik-token kesinliğiKirletici token’larÇıktı üretti
Readability1.00000.23530.91093522/22
trafilatura0.98650.05880.9411422/22
newspaper4k0.98650.00000.9452022/22
resiliparse0.90540.05880.9381722/22
jusText0.83780.47060.87607419/22
goose30.82430.00001.0000020/22

sixway-scores.json. Her örnekteki her birim benzersiz bir sentinel token taşıdığı için, “geri alındı” ve “sızdı” ölçüleri benzerlik skoru değil, tam alt dize eşleşmesidir. Geri çağırma 22 örneğin tamamı üzerinden; sızıntı ve kesinlik ise hem makale hem de boilerplate içeren 11 örnek üzerinden hesaplanır.

Üç sütunu ayrı ayrı ele almak gerekir.

Her sayfaya yanıt verdi. goose3 ve jusText bunu yapmadı — sırasıyla 22’nin 20’si ve 19’u. Bu göründüğünden daha önemlidir; çünkü böyle bir tabloda kesinlik ve F1, çıktı üretilmesi koşuluna bağlıdır: boş string döndüren bir kütüphane oranların hiçbir tarafına katkı yapmaz, yani vazgeçmek bedavadır. goose3’ün 1.0000 kesinliği 11 örneğin 10’u üzerinden hesaplandı; newspaper4k’nin 0.9452 değeri ise 11’in 11’i üzerinden. Bunlar tam olarak aynı ölçüm değildir.

Hiçbir şey sızdırmadı. Örnekler, kasıtlı olarak adversarial boilerplate içeriyor — makalenin yanında yer alan nötr sınıflı promosyon blokları, masum sınıf adlarına sahip yorum dizileri, içinde “ad” geçmeyen reklam blokları. Readability’nin kardeş öğe ekleme sezgisi bunların birkaçını yuttu; newspaper4k ise hiçbirini almadı.

74 birimden yalnızca birini kaçırdı ve kaçırdığı birim başka örneklerde de ortak.

Kaçırılan öğe, düzyazı olmayan örnekte — paragraflar yerine tablolar, bir kod bloğu, kısa öğeler ve bir görsel alt yazısından oluşan sayfada — yer alıyor ve kaçırılan birim alt yazı. Bu konuda tek değil:

KütüphaneDüzyazı olmayan sayfadaki geri çağırmaKaçırılan birimler
Readability1.000
jusText1.000
trafilatura0.875alt yazı
resiliparse0.875alt yazı
newspaper4k0.875alt yazı
goose30.250her iki tablo, kod bloğu, her iki kısa öğe, alt yazı

Üç kütüphane aynı alt yazıyı ve başka hiçbir birimi kaçırmıyor; bu da üç ayrı hatadan çok, alt yazının değerine dair ortak bir miras varsayımına benziyor. İçeriğiniz dokümantasyon, tarifler ya da alt yazının paragrafta olmayan bilgiyi taşıdığı herhangi bir şeyse, bunu karar vermeden önce test etmeye değer — üstelik Readability ve jusText bunu korudu.

Aynı örnek, goose3’ün tamamen çöktüğü yer; sayfanın dörtte üçünü kaybediyor. Bu da “düzyazı olmayan içerik” ekseninde bu altı araç arasındaki farkın, başlık tablosunun düşündürdüğünden çok daha büyük olduğunu gösteriyor.

Hız açısından, newspaper4k’nin 22 örnek boyunca medyan çıkarım süresi 2,69 ms oldu; bu altı araç içinde en yavaşıydı ve en kötü durum 199,81 ms’ye ulaştı. Bu, kontrollü koşullarda resiliparse’ın 0,06 ms medyanına karşı 45 katlık bir fark demektir. Tek sayfalık bir iş akışında medyan küçük görünebilir, ancak yük altında toplam iş hacmi ve kuyruk gecikmesi test edilmedi. Soğuk import aşağıda ayrıca ölçülmüştür.

İlk satırda değiştireceğim varsayılan

Sistem diyagramı: İlk satırda değiştireceğim varsayılan

Resmî kaynak: newspaper4k belgeleri.

Pakette gelen Configuration nesnesi incelendiğinde yirmi iki ayar ortaya çıkıyor. Bunlardan biri şu:

Sistem diyagramı: Alma İşlemini Çıkarmadan Ayırın

_honor_robotstxt = False

newspaper4k, siz açıkça söylemedikçe robots.txt kurallarına uymaz. Eğer kütüphanenin kendisinin veri çekmesine izin verirseniz — Article(url).download() ve input_html olmadan — yönlendirdiğiniz her şeyi, sitenin robots dosyası ne diyorsa desin, çeker.

Bu, elinizde zaten HTML bulunan bir kütüphane için savunulabilir bir mühendislik varsayımıdır; ancak üretimde binlerce URL’ye yönlendirdikten sonra fark edilecek bir seçim olarak savunulamaz. Configuration üzerinde honor_robotstxt=True ayarlayın ya da input_html geçirip veriyi kendiniz çekin; ben bu test boyunca bunu yaptım.

Bilmeniz gereken iki varsayılan daha var:

number_threads = 10. Çoklu makale yardımcılarında varsayılan paralellik ondur. Eşzamanlılık, saniye başına istek sayısı değildir; ama host başına açık limitler ve zamanlama tanımlamazsanız kısa süreli istek patlaması yaratabilir.

fetch_images = True. Görsel indirme varsayılan olarak açık; bu da çevrim dışı kullanım açısından soru işareti yaratıyor. socket.connect engellenmişken, test edilen newspaper4k 0.9.6 yolu — download(input_html=…) ardından tek elde tutulan HTML girdisi üzerinde parse() — tamamlandı, 1.292 karakter döndürdü ve sıfır ağ bağlantısı denemesi yaptı. Bu, tam olarak bu yolu destekler; her yapılandırmayı, eklentiyi, içerik türünü ya da gelecekteki sürümü değil.

Diğer ayarlar makul: min_word_count 300, min_sent_count 7, max_text 100.000, http_success_only True, memorize_articles True, follow_meta_refresh False, allow_binary_content False.

Kurulum gerçeği

pip install newspaper4k, yaklaşık altı saniyede 22 paket ve 47,5 MiB indirir. Temiz bir alt süreçte soğuk import: 2,812 s — karşılaştırmadaki en yavaş değer.

KütüphanePaketlersite-packagesSoğuk importÇıkarma p50
resiliparse521.0 MiB0.015 s0.06 ms
jusText322.4 MiB0.777 s0.56 ms
goose31644.3 MiB2.181 s1.85 ms
newspaper4k2247.5 MiB2.812 s2.69 ms
trafilatura1769.9 MiB1.584 s0.51 ms

install-and-import.json. Her kütüphane kendi boş sanal ortamında çalıştırıldı; böylece hiçbir şey başka bir kütüphanenin bağımlılıklarını devralmadı.

2,812 saniyelik import süresi, resiliparse’ın 15 milisaniyesinden 187 kat daha yavaştır. Uzun ömürlü bir worker’da bunu bir kez ödersiniz ve önemsiz hale gelir. Sunucusuz bir fonksiyonda ise bunu her soğuk başlangıçta ödersiniz; bu da newspaper4k’nin çıkarım kalitesi ne kadar iyi olursa olsun yanlış seçim olduğu durumdur.

Kurulumda ufak bir pürüz var. Import sırasında bir uyarı yazdırıyor:

UserWarning: nltk is not installed. Some NLP features will be unavailable. Install it with: pip install 'newspaper4k[nlp]'

Bu testte bu özelliklerin hiçbirine ihtiyaç yoktu ve çıkarım bunlar olmadan gayet iyi çalıştı; ancak temel kurulum tam kurulum değildir ve newspaper4k[nlp] önemli ölçüde daha ağır bir bağımlılık ağacıyla birlikte korpus indirmeleri de getirir. Anahtar kelimeler ve özetler istiyorsanız bunu bütçelemeniz gerekir.

Bellek ve bozuk HTML’nin etkisi

Bu serideki her incelemenin “test edilmedi” dediği iki konu, artık ölçülmüş durumda.

Daha geniş stres testi bağlamı on kütüphanelik bellek ve bozuk HTML karşılaştırmasında yer alıyor.

Tepe yerleşik bellek, /usr/bin/time -l ile, her hücre için yeni bir süreçte ölçüldü — import tabanı kütüphanenin yüklenmiş ve boşta durumdayken maliyetidir, tepe değerler belgeyi de içerir.

KütüphaneÇalışma zamanıImport tabanı (MiB)226 KB HTML tepe (MiB)10 MB HTML tepe (MiB)
html2textpython3.1418.719.971.2
pyquerypython3.1430.333.9172.5
resiliparsepython3.1420.525.1225.1
markdownifypython3.1423.928.9278.5
goose3python3.1444.152.4398.5
cheerionode2266.876.5398.5
justextpython3.1430.336.6431.2
newspaper4kpython3.1452.661.8668.5
trafilaturapython3.1452.564.8927.1
turndownnode2247.868.42947.1

memory-results.json. Python ve Node taban değerleri birbirleriyle doğrudan kıyaslanamaz; yorumlayıcı her ikisinin de içindedir.

newspaper4k’nin tabanı 52,6 MiB ve 10 MB tepe değeri 668,5 MiB’dir — Python kütüphaneleri arasında ikinci en ağır değer. Bunların hiçbiri sıradan sayfalar için sorun değildir; ancak büyük belgeleri bellek sınırı olan bir worker’da toplu işlerken ikisi de önemlidir.

Bozuk HTML. Açılmamış etiketler, yanlış iç içe geçmiş satır içi öğeler, boşluk içeren tırnaksız öznitelikler, fazladan kapanışlar, hiç <html> olmaması, yinelenen öznitelikler, ortasında kesilmiş bir belge, hatalı entity’ler, kapatılmamış bir <script>, yalan söyleyen bir charset bildirimi, markup içeren bir yorum ve 600 katmanlı iç içe geçme — her biri tam olarak bir şeyi bozan on iki belge; buna ek olarak boyutları eşleştirilmiş iki düzgün kontrol, çünkü “hiç çıktı vermedi” ifadesi, aynı boyuttaki temiz bir belgede de sessizlik varsa bozukluk hakkında tek başına çok şey söylemez.

Kontroller ve bozuk durumlar ham sonuçlarda net biçimde ayrışıyor:

GrupBelge sayısıHata verdiBoş çıktıPuanlanan sentinel’ları geri aldı
Düzgün, eşleşen kontroller200bozukluk puanında kullanılmadı
Bozuk örnekler120105/33, kapatılmamış-<script> durumu hariç

İki kontrol 70 ve 1.351 karakter üretti; on iki bozuk girdinin onunda ise boş string döndü. Bu da sessizliğin, yalnızca kısa girdiden değil, bu örnek tasarımında bozukluktan kaynaklandığını gösteriyor. Puanlayıcı, uygun on bir bozuk belgede başlık, paragraf ve bağlantı sentinel’larını kontrol eder. Kapatılmamış-<script> örneği hariç tutulur; çünkü HTML5 ayrıştırmasına göre sonraki işaretleme hâlâ script içeriğidir. malformed-results.json dosyasına bakın. Bu, seçime taşınması gereken ciddi bir geri kazanım sınırlamasıdır; sadece “hata vermedi” başarısı değildir.

Artılar ve eksiler

Lehine. Bu karşılaştırmada etiketlenmiş boilerplate token’ı yok, 22 kontrollü makale örneğinin tamamında çıktı var ve puanlanan makale geri çağırma oranı 0.9865. Makale metnini ve meta veri alanlarını sunuyor; ancak meta veri doğruluğu test edilmedi. Test edilen elde tutulan HTML yolu, socket.connect engelliyken ağ denemesi yapmadı. Depoda kontrol sırasında yakın tarihli bir gönderim vardı; daha geniş bakım sağlığı değerlendirilmedi.

Aleyhine. Kümedeki en ağır soğuk import: 2,812 s ve ölçülen site-packages içinde 22 paket / 47,5 MiB. honor_robotstxt varsayılan olarak False ve çoklu makale yardımcıları on iş parçacığıyla başlar. Temel kurulumda eksik NLTK için uyarı veriliyor; bu nedenle anahtar kelimeler ve özetler daha ağır bir isteğe bağlı kurulum gerektiriyor. En önemlisi, eşleşen iki düzgün kontrol metin üretmişken on iki bozuk örneğin onu boş çıktı verdi.

Kimler kullanmalı, kimler kullanmamalı?

newspaper4k’yi değerlendirin eğer önceliğiniz şu sıradaysa: kontrol edilen, makale odaklı korpusta boş olmayan metin üretmek, o korpusta etiketlenmiş boilerplate’i en aza indirmek ve daha yavaş bir soğuk importu kabul etmek. Bu açık kurala göre bu örnek karşılaştırmada öne çıktı. Farklı bir kural, maksimum puanlı içerik korunumu için Readability’yi veya başlangıç ve medyan çıkarım hızı için resiliparse’ı seçebilir.

Soğuk başlangıç baskınsa, 47,5 MiB ölçülen site-packages önemliyse veya bozuk HTML’den toparlanma kritikse bunu atlayın ya da dikkatle ön test edin. resiliparse burada 187 kat daha hızlı import edildi; ancak kalite sütunlarının tamamında trafilatura ile başa baş değildi: trafilatura daha yüksek makale geri çağırmasına sahipti ve sızıntı ile kesinlik profilleri de farklıydı. newspaper4k makale odaklıdır; ürün listeleri ve panolar test edilmedi, bu nedenle onlar için bir davranış iddiasında bulunulmuyor.

Ne yaparsanız yapın, fetching kullanacaksanız honor_robotstxt ayarlayın. Bu bir performans notu değildir.

Yönetilen API nerede devreye girer?

newspaper4k, çağıranın sağladığı HTML’yi ayrıştırabilir ve ayrıca veri çekme yollarına da sahiptir. Yönetilen bir çıkarım servisi ise edinme, render ve şema işlerini sağlayıcı sınırının arkasına taşır. Biz Thunderbit geliştiriyoruz; ancak bu örnek setinde çalıştırılmadı, bu yüzden bu inceleme kalite, render, anti-bot, gecikme ya da maliyet açısından bir karşılaştırma sunmaz. Elde tutulan makale HTML’si için buradaki kanıt yalnızca newspaper4k ile ilgilidir; makale dışı hedefler kendi değerlendirmesini gerektirir.

Aynı örneklerin altı çıkarıcıdaki karşılaştırması için altı kütüphaneli çıkarım karşılaştırmasına bakın.

Bulut tabanlı seçenekler için web scraping API derlememiz daha geniş resmi sunar; kendi kendine barındırılan alternatifler için açık kaynak scraper kılavuzu. Metin bir modele gidecekse, Python’da HTML’yi Markdown’a dönüştürme bölümünde doğruluğun nerede kaybolduğu ele alınıyor.

Web Verisi Çıkarma için Thunderbit’i Deneyin

newspaper4k kullanmalı mısınız?

HTML zaten elinizdeyse, newspaper4k’yi makale metni çıkarımı için güçlü bir aday olarak değerlendirin ve sonra benimsemek için kendi korpusunuzda gerçek site testine sokun. Bu kontrollü set, yüksek puanlı makale geri çağırması, etiketlenmiş boilerplate olmaması ve 22 makale odaklı örneğin tamamında boş olmayan çıktı desteği sunuyor. Ancak gerçek sayfaları ya da meta veri doğruluğunu kapsamıyor; ayrıca on iki bozuk örneğin onu boş çıktı verdi.

Eğer fetching yolunu kullanırsanız, honor_robotstxt=False, on iş parçacıklı paralellik ve host başına oran kontrolünü açıkça gözden geçirin. Soğuk başlangıç ya da bağımlılık ayak izi önemliyse, 2,812 saniyelik yerel import ve 47,5 MiB site-packages gözlemini dağıtım ortamınızda ölçün; bunları evrensel konteyner maliyeti gibi varsaymayın.

Web Verisi Çıkarma için Thunderbit’i Deneyin Get Started Free

SSS

set_html() neden çalışmıyor? Çünkü newspaper4k’de böyle bir yöntem yok. HTML, download(input_html=html) üzerinden verilir, ardından parse() çağrılır. Arama sonuçları newspaper3k örneklerini gösterebildiğinden bu kolayca yapılabilecek bir hatadır; ben ilk çalıştırmada yaptım ve puanlamadan önce test düzeneğini düzelttim.

newspaper4k robots.txt’ye uyuyor mu? Varsayılan olarak hayır. honor_robotstxt kutudan çıktığı hâliyle False gelir. Kütüphanenin veri çekmesine izin verecekseniz bunu Configuration üzerinde True yapın ya da input_html geçirip veriyi kendiniz çekin. Çoklu makale işlemleri de varsayılan olarak on iş parçacığı kullanır. Bu, sizin seçmediğiniz bir paralelliktir; sabit bir istek hızı değildir, bu yüzden fetching için host başına açık limitler tanımlayın.

parse() ağ isteği yapar mı? newspaper4k 0.9.6 üzerinde, test edilen download(input_html=…) + parse() yolu, socket.connect engellenmişken tutulan tek bir HTML girdisi için sıfır bağlantı denemesi yaptı. Bu, her ayrıştırıcı yapılandırmasının, eklentinin, içerik türünün ya da gelecekteki sürümün ağsız olacağını kanıtlamaz.

İçe aktarımdaki NLTK uyarısı nedir? Temel kurulumda NLTK bulunmadığı için anahtar kelime çıkarımı ve özetleme kullanılamaz; kütüphane bunu içe aktarım sırasında belirtir. Çıkarımın kendisi etkilenmez — burada ölçülen her şey temel kurulumda çalıştı. pip install 'newspaper4k[nlp]' komutu, daha ağır bir bağımlılık ağacı ve korpus indirmeleriyle birlikte bu özellikleri ekler.

Bu inceleme neyi test etmedi? Gerçek dünya sayfalarını değil — bunlar etiketli birimlere sahip kontrollü örneklerdir. Meta veri alanları envanterlendi ama başlık, yazar, tarih veya görsel doğruluğu için puanlanmadı. Çok dilli çıkarım, NLP ekleri, çok iş parçacıklı kaynak taraması ve yük altındaki iş hacmi de test edilmedi. Süreç tepe belleği, eşzamanlılık veya sürekli yük altında değil, 226 KB ve 10 MB’lık birer HTML girdisi üzerinde ölçüldü.

Ke
Ke
Thunderbit’ta CTO | Kıdemli Veri Bilimci ve ML Uzmanı Makine öğrenimi ve veri bilimi alanında yaklaşık on yıllık deneyime sahip olan Ke Shen, Columbia University mezunu ve Walmart Labs’te eski Kıdemli Veri Bilimci’dir. Python, R, Java ve İstatistik konularında derin ve meslektaşları tarafından tanınan uzmanlığıyla, karmaşık yapay zekâ algoritmalarını teoriden üretim düzeyinde mimariye taşıma konusunda sahada test edilmiş içgörüler paylaşır.
İçindekiler
Thunderbit · AI web veri ajanı

Herhangi bir sayfadan 1 tık içinde veri çıkar

250.000+ kullanıcı tarafından güveniliyor
ücretsiz plan mevcut
Web sayfasından tabloya
İhtiyacını anlat — Thunderbit’in AI Ajanı bunu çeker ve Excel, Google Sheets, Airtable veya Notion’a aktarır. Başlamak ücretsiz.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week