Bir web sayfasını indirmek kolaydır; içinden makaleyi çıkarmak ise o kadar kolay değildir. Tipik bir haber ya da blog sayfasında menüler, çerez bildirimleri, "ilgili haberler" şeritleri, bülten kutuları, yorumlar ve alt bilgi bulunur; asıl istediğiniz birkaç paragraf bunların arasında bir yerde durur. Bir ajan ya da erişim hattı sayfanın tamamını okursa gürültüyü içerik sanar. Bu rehberde iyi bir makale çıkarma adımının ne döndürmesi gerektiğini, şablon metni ayıklamanın nasıl çalıştığını ve nerede bozulduğunu, savunabileceğiniz yazar ve tarih bilgisine nasıl ulaşacağınızı, robots kurallarının ve lisansların hattınız için ne anlama geldiğini ve sonraki her alıntının geriye izlenebilmesi için kaynak referansını metne nasıl bağlı tutacağınızı ele alıyoruz.
Çıkarma adımı ne döndürmeli
Kütüphaneleri ya da barındırılan API'leri karşılaştırmadan önce, sonunda elinizde olmasını istediğiniz kaydı tanımlayın. Yalnızca metin yetmez. Üst veri olmadan güncelliğe göre sıralayamaz, bir alıntıyı kaynağına bağlayamaz, aynı haberin iki sürümünü birbirinden ayıramazsınız. İşe yarar bir hedef kayıt şöyle görünür:
{
"requested_url": "https://haber.example.org/yazi?id=812&utm_source=feed",
"final_url": "https://haber.example.org/haber/belediye-butcesi",
"canonical_url": "https://haber.example.org/haber/belediye-butcesi",
"http_status": 200,
"retrieved_at": "YYYY-MM-DDThh:mm:ssZ",
"title": "Belediye meclisi revize bütçeyi onayladı",
"authors": ["A. Yazar"],
"published": {"value": "YYYY-MM-DD", "source": "json-ld"},
"modified": {"value": "YYYY-MM-DD", "source": "meta"},
"language": "tr",
"site_name": "Örnek Haber",
"text": "...düz metin ya da markdown olarak ana gövde...",
"headings": ["Arka plan", "Neler değişiyor"],
"content_hash": "sha256:...",
"extractor": "çıkarıcı adı ve sürümü",
"license_note": "bilinmiyor"
}Üç alan göründüğünden fazla iş görür. final_url ve canonical_url, beslemeler, izleme parametreleri ve içerik ortaklıkları üzerinden ulaşılan aynı makaleyi tekilleştirmenizi sağlar. Her tarihin yanındaki source, tarihin nereden alındığını kaydeder; kaynaklar çeliştiği anda bu önem kazanır. extractor ise hatalı bir sürümü düzelttiğinizde yalnızca o sürümün işlediği sayfaları yeniden işlemenize olanak verir.
Şablon metin ayıklama nasıl çalışır, nerede bozulur
Ana içerik çıkarıcıların çoğu birkaç sinyali birlikte kullanır:
- Anlamsal işaretleme. Site doğru kullandığında
articlevemainöğeleri ile schema.org'dakiarticleBodyözelliği doğrudan içeriği gösterir. - Metin yoğunluğu. Uzun düzyazı içeren, az bağlantılı bloklar yüksek puan alır; çoğunlukla bağlantılardan oluşan bloklar (menüler, etiket bulutları, "sıradaki yazı" kutuları) düşük puan alır.
- Yapı ve sınıf adları.
comment,sidebar,promoya dasharegibi adlar taşıyan kapsayıcılar cezalandırılır;contentya dapost-bodygibi adlar ödüllendirilir. - Sayfalar arası karşılaştırma. Sık işlediğiniz sitelerde her sayfada tekrarlanan bloklar içerik değil şablondur. Aynı siteden birkaç sayfayı karşılaştırmak bunları güvenilir biçimde temizler.
Açık kaynak seçenekler arasında Mozilla'nın Readability kütüphanesi (Firefox'un okuyucu görünümünün arkasındaki algoritma) ve ana metin ile üst veri çıkarmaya yönelik bir Python kütüphanesi olan Trafilatura sayılabilir. Barındırılan makale çıkarma API'leri benzer fikirleri sayfa işleme ve ölçekle birlikte sunar. Hangisini seçerseniz seçin, çıkarıcıları genellikle yenen sayfalarda deneyin:
- Gövdesini JavaScript ile oluşturan, düz bir HTTP isteğine boş bir kabuk döndüren sayfalar. Sayfa işlemenin ne zaman maliyetine değdiğini başsız tarayıcı API'leri sayfası anlatıyor.
- Canlı bloglar ve zaman akışları; burada "makale", zaman damgalı kısa girdilerden oluşan bir yığındır.
- Birden fazla sayfaya bölünmüş ya da "devamını göster" düğmesinin arkasına kısaltılmış makaleler.
- Çerez onayı ya da ödeme duvarı ara sayfaları. Ödeme duvarı uyarısını makale diye döndüren bir çıkarıcı, hiç çalışmayandan daha kötüdür; çünkü başarı gibi görünür.
Bu son nokta genellenebilir: hatayı görünür kılacak biçimde tasarlayın. Çıkarılan metin sayfaya göre çok kısaysa, bir onay ifadesi içeriyorsa ya da aynı sitedeki başka bir sayfanın metniyle aynıysa, onu aktarmak yerine işaretleyin.
Savunabileceğiniz yazar ve tarih bilgisi
Yazar satırı ve tarih önemsiz görünür, ama sessiz hataların sık rastlanan kaynağıdır. Tek bir sayfada yayın tarihi, güncelleme tarihi, bağlantı verilen haberlerin tarihleri, alt bilgideki telif yılı ve yorumların zaman damgaları bir arada bulunabilir. Kaynakları sabit bir sırayla kontrol edin ve hangisini kullandığınızı kaydedin:
- Yapılandırılmış veri.
NewsArticle,BlogPostingya daArticletüründe,datePublished,dateModifiedveauthoralanlarını içeren JSON-LD. Sözlüğün belgeleri schema.org adresinde. - Meta etiketleri.
article:published_timegibi Open Graph özellikleri ve yaygın yayın sistemlerinin ürettiği meta adları. - Gövdedeki işaretleme. Başlığın yakınında
datetimeözniteliği taşıyan birtimeöğesi ya da yazar satırı olarak işaretlenmiş bir öğe. - Görünen metin. "Yayınlanma" ya da "Güncellenme" satırları; sayfanın dili ve yerel tarih biçimi dikkate alınarak ayrıştırılır.
- URL. Yoldaki bir tarih parçası zayıf bir ipucudur; yalnızca eşitliği bozmak için kullanılmalıdır.
İleride baş ağrısını önleyen birkaç kural var. Yayın ve değişiklik tarihlerini ayrı tutun; değişiklik tarihini asla yayın tarihi gibi sunmayın. Zaman damgalarını saat dilimiyle birlikte saklayın ya da saat dilimi verilmediğini not edin. Kaynaklar arasında bir günden fazla fark varsa ikisini de saklayın ve alanı belirsiz olarak işaretleyin. Yazarlarda birden fazla adı ayırın, "Yazan:" gibi önekleri ve görev unvanlarını atın, bir haber masasını ya da kurumu kişi sanmayın. Yazar belirtilmemişse site adıyla doldurmak yerine bilinmiyor olarak saklayın.
Robots kuralları, site koşulları ve lisanslar
Bir sayfayı teknik olarak indirebiliyor olmanız, onu indirmenize, saklamanıza ya da metnini yeniden kullanmanıza izin verildiği anlamına gelmez. Bunları ayrı sorular olarak ele alın. Aşağıdakiler genel bir yön bulma notudur, hukuki tavsiye değildir; somut durumları hukuk danışmanınıza götürün.
- Robots kuralları. RFC 9309 ile tanımlanan Robots Dışlama Protokolü, otomatik istemcilere sitenin hangi yolların taranmamasını istediğini bildirir. İndirmeden önce kontrol edin, makul bir süre önbellekte tutun ve istemcinizi dürüst bir kullanıcı aracısı ve iletişim adresiyle tanıtın. Sayfa düzeyindeki
robotsmeta etiketi ya danoarchive,nosnippetdeğerleri taşıyanX-Robots-Tagbaşlığı, saklama ve gösterme konusunda da bir şey söyler. - Site koşulları. Pek çok yayıncı kullanım koşullarında otomatik erişimi ya da yeniden kullanımı kısıtlar. Bazıları bunun yerine besleme ya da lisanslı API sunar; tekrarlayan bir ihtiyaç için genellikle daha temiz yol budur.
- Telif hakkı. Metni bir çalışma arkadaşınızın kurum içinde okuyup analiz etmesi için çıkarmak, onu yeniden yayımlamaktan ya da müşterilere göstermekten farklı bir kullanımdır. Kaynak belirtilerek ve bağlantı verilerek yapılan kısa alıntılar yaygın bir kalıptır. Tam metni süresiz saklamak ise adı belli bir sorumlunun vereceği açık bir karar gerektirir.
- Sayfadaki lisanslar. Sayfa Creative Commons gibi bir lisans beyan ediyorsa bunu üst veriye yazın; böylece metni sonradan kullanacak kişiler hangi atıf ve yeniden kullanım koşullarının geçerli olduğunu bilir.
- Oturum açma ve ödeme duvarları. Giriş gerektiren içerik, sizin bir hesabınız var diye herkese açık hale gelmez. Bir hattın kişisel kimlik bilgilerini yeniden kullanmasına ya da erişim denetimlerini dolanmasına izin vermeyin.
Kaynak referansını metne bağlı tutun
Çıkarılmış bir makale, biri sonradan "bu cümle nereden geliyor?" diye sorduğunda birkaç saniyede yanıt alabiliyorsa işe yarar. Bunun için referansın metinle birlikte her adımda taşınması gerekir: parçalama, özetleme, vektörleştirme, alıntılama.
- Her makaleye kanonik URL ile içerik özetinden türetilmiş kalıcı bir kimlik verin; böylece değişen bir makale eskisinin yerine sessizce geçmez, yeni bir sürüm olarak kaydedilir.
- Alınma zaman damgasını saklayın. Bir sayfa, sitenin o anda ne söylediğinin kanıtıdır; sonsuza kadar geçerli değildir.
- Metni parçalara bölerken her parçaya makale kimliğini ve karakter konumlarını yazın; böylece bir alıntı özgün metinde bulunabilir.
- Koşullar izin veriyorsa ham HTML anlık görüntüsünü çıkarılan metnin yanında tutun. Çıkarıcınız değiştiğinde sayfayı yeniden indirmeden işleyebilir, sayfanın o anki halini de gösterebilirsiniz.
- Bir özet ya da ajan yanıtı makaleye atıf yaptığında, alıntılanan pasajın saklanan metinde gerçekten geçtiğini kontrol edin. Bağlantı nereye bakılacağını gösterir; iddianın orada olduğunu göstermez. Ayakta kalan atıflar notu konuyu daha ileri taşıyor.
Çıkarıcıları kendi sayfalarınızda değerlendirin
Satıcı demoları uysal sayfalarla yapılır. Gerçekten bağlı olduğunuz sitelerden, yukarıdaki zorlu örnekleri de içeren küçük bir test kümesi oluşturun; her sayfa için beklenen başlığı, yazarları, tarihleri ve gövdenin ilk ve son cümlesini not edin. Her adayı çalıştırın, sonuçları elle karşılaştırın ve her birinin nasıl hata yaptığını yazın: eksik paragraflar, geride kalan şablon metin, yanlış tarih kaynağı ya da başarı diye bildirilen boş bir sonuç.
Kütüphaneler denetimi size bırakır ve kodunuzun yanında çalışır. Barındırılan API'ler sayfa işlemeyi ve ölçeği üstlenir; isteklerinizden neyi, ne kadar süre sakladıklarını ve koşullarının çıktıyla ne yapmanıza izin verdiğini kontrol edin. Fiyat ya da teknik özellik gibi makale dışındaki alanlar için yapay zekâ ile yapılandırılmış veri çıkarma, indirme katmanını seçmek için de kazıma API'si rehberi yazısına bakın.
GoCux nerede devreye girer
GoCux web sayfalarını indirmez ya da taramaz; bu nedenle bir makale çıkarma API'si değildir. Malzeme elinize geçtikten sonraki kısımda çalışır. Web içeriği bir GoCux projesine yalnızca yetkilendirilmiş bir tarama ya da dışa aktarma adımıyla girer ve içe aktarılırken özgün sayfa referansını ve alındığı tarihi korur; bu rehberin savunduğu kaynak bilgisi de tam olarak budur. Giriş gerektiren bir sayfanın bağlantısı, o girişi aşma izni sayılmaz.
Bu noktadan sonra Bilgi çıkarma, içe aktarılan malzemeden istediğiniz değerleri çıkarır ve her birine onu destekleyen pasajı ekler; metnin söylemediği bir değer bilinmiyor olarak kalır. Bilgi arama, bir projenin belgeleri içinde soruları yanıtlar ve pasajları atıflarıyla birlikte getirir. Web malzemesinin nasıl ele alındığını web kaynakları ve sorumlu ajan erişimi sayfası anlatıyor.
Makale çıkarma adımı için kontrol listesi
- Çıktı kaydı tanımlı: istenen, son ve kanonik URL, alınma zamanı, başlık, yazarlar, kaynağıyla birlikte tarihler, dil, metin, içerik özeti ve çıkarıcı sürümü.
- Hatalar görünür: kısa, yinelenen ya da onay sayfasından gelen metin aktarılmıyor, işaretleniyor.
- Yayın ve değişiklik tarihleri ayrı tutuluyor; saat dilimi var ya da açıkça "belirtilmemiş" yazıyor.
- Bilinmeyen yazar ve tarihler tahminle doldurulmuyor, bilinmiyor olarak saklanıyor.
- Robots kuralları kontrol ediliyor, istemci kendini tanıtıyor ve tekrarlayan her kaynağın koşulları okundu.
- Tam metnin saklanması ve yeniden kullanımı için bir sorumlu ve bir karar var; sayfa lisansları kaydediliyor.
- Her parça makale kimliğini ve konumunu taşıyor; alıntılar saklanan metne karşı kontrol ediliyor.
- Adaylar kendi zorlu sayfalarınızda denendi ve sonuçlar elle kontrol edildi.
Bu iş akışını çalışma alanınıza taşıyın.
Kapsamı belirleyin. Kanıtları inceleyin. Gereken adımları onaylayın.