iToverDose/Yazılım· 3 HAZIRAN 2026 · 04:03

Web siteleri için tek tek kodlama yerine çalışma zamanı tarayıcı mantığı üretmek

Bir web sitesinin yapısını otomatik algılayan ve içerik çıkaran sistemler nasıl tasarlanır? Kod yerine veri olarak tanımlanan yaklaşımlar, hem verimliliği artırıyor hem de bakım yükünü azaltıyor.

DEV Community4 dk okuma0 Yorumlar

Uzun vadeli bilgi birikimini dijital ortama aktarmak için blog gönderilerini toplu olarak indiren ve bu içerikleri wikiye dönüştüren bir yapı hayal edin. Bu süreçte en zahmetli adım, her site için ayrı kod yazmak yerine, çalışma zamanı sırasında otomatik olarak tarayıcı mantığı üretmektir. pluckmd adlı proje tam da bu soruna odaklanıyor ve tek bir veri yapısıyla farklı web sitelerinden içerik çıkarmayı mümkün kılıyor.

Projenin temel fikri, tarayıcı mantığını kod olarak değil, veri olarak tanımlamaktır. Böylece hem geliştirme süreci hızlanıyor hem de farklı kaynaklara uyarlama kolaylaşıyor. Sistem, öncelikle yerel sezgisel yöntemleri kullanır, ardından karmaşık durumlarda büyük dil modelini devreye sokar. Bu yaklaşım, hem performansı artırıyor hem de yanlış çıkarımların sisteme zarar vermesini engelliyor.

Veri olarak tanımlanan adaptör yapısı

pluckmd’nin çekirdeğinde, AdapterSpec adlı basit bir JSON nesnesi bulunuyor. Bu nesne, bir web sitesinden içerik çıkarmak için gerekli tüm talimatları barındırıyor ve siteye özel kod yazma ihtiyacını ortadan kaldırıyor:

interface AdapterSpec {
  listing: ListingExtractionSpec;    // Makale bağlantılarını bulma yöntemi
  article: ArticleExtractionSpec;    // Makale içeriğini çıkarma yöntemi
  pagination: PaginationSpec;        // Sayfalama davranışı (scroll, buton tıklama vb.)
  evidence: string;                  // Doğrulama için kullanılan kanıt
}

Bu yapı, hem elle girilebilecek basit bir JSON dosyası hem de büyük dil modeli tarafından üretilen bir çıktı olabiliyor. Aynı zamanda yerel sezgiler, önceden kaydedilmiş cache verileri ya da otomatik olarak oluşturulan önerilerle de doldurulabiliyor. Sistem, tüm bu kaynaklardan gelen verileri aynı şekilde işleyerek tutarlı bir çıkış elde ediyor.

Sezgisel yöntemler ve büyük dil modellerinin rolü

Sistem, öncelikle üç aşamalı bir doğrulama süreci uyguluyor:

  1. Cache kontrolü: Önceden kaydedilmiş ve doğrulanmış veriler ilk sırada deneniyor. Eğer cache verisi güncelse, doğrudan kullanılıyor.
  1. Yerel sezgiler: Sayfa yapısını analiz eden algoritmalar devreye giriyor. Örneğin, tüm bağlantılar normalize edilerek ortak desenler bulunuyor:
  • /blog/ilk-gonderi/blog/*
  • /blog/ikinci-gonderi/blog/*
  • /hakkinda/hakkinda

Bu desenlerden en az üç bağlantı içeren ve sayfa içindeki oranı yüksek olan grup, makale listesi olarak kabul ediliyor. Sistem, bağlantıların derinliği, içerik alanında bulunma durumu ve benzeri faktörlere göre puanlama yapıyor.

  1. Büyük dil modeli müdahalesi: Eğer yerel sezgiler yeterli sonucu üretemezse, büyük dil modeli devreye giriyor. Model, sayfa yapısını analiz ederek bir AdapterSpec oluşturuyor. Ancak bu çıktı, doğrudan kullanılmadan önce canlı DOM üzerinde test ediliyor.

Bu katmanlı yaklaşım, hem performansı artırıyor hem de hatalı çıkarımların sisteme zarar vermesini engelliyor. Her seferinde, doğrulanmış veriler cache’e yazılarak sonraki çalışmalarda hızlı bir şekilde kullanılabiliyor.

Canlı DOM doğrulama ve güvenlik

Sistem, herhangi bir veriyi kullanmadan veya cache’e kaydetmeden önce, canlı DOM üzerinde aşağıdaki koşulları doğruluyor:

  • Bağlantı seçicisi en az üç bağlantı bulmalı
  • Bu bağlantılarının en az yarısı URL desenine uygun olmalı
  • İçerik çıkarma için kullanılan yöntem en az 80 karakterlik bir metin üretmeli

Bu doğrulama adımı, hem elle girilen hem de model tarafından üretilen verilerin güvenilirliğini sağlıyor. Eğer bir spek doğrulanamazsa, sistem reddederek kullanılmıyor. Bu sayede, hem yanlış çıkarımların sisteme zarar vermesi engelleniyor hem de kullanıcıların güvenilir olmayan kaynaklardan veri almaması sağlanıyor.

Farklı sayfa kaynaklarına esnek destek

Bir web sitesinden içerik çıkarmak için statik bir HTTP isteği, headless tarayıcıyla render edilmiş bir sayfa ya da kullanıcının kendi tarayıcısında oturum açmış hali oldukça farklı sonuçlar doğurabilir. pluckmd, bu üç farklı kaynağı tek bir arayüz altında topluyor:

  • Statik fetch: Basit HTTP istekleriyle içerik çıkarımı
  • Headless tarayıcı: JavaScript tarafından render edilen içerikleri alma
  • Kullanıcı tarayıcısı: Oturum gerektiren sitelerden veri alma

Buna ek olarak, sistem DomEvaluator adlı bir bileşenle canlı işlemleri de destekliyor. Örneğin, sayfa aşağı kaydırma, "Daha fazla yükle" butonuna tıklama gibi işlemler kolayca gerçekleştirilebiliyor. Bağlantı toplayıcı ve içerik çıkarıcı bileşenleri, hangi kaynaktan geldiklerini bilmiyor. Bu sayede, yeni bir kaynak eklemek için sadece ilgili arayüzün uygulanması yeterli oluyor.

Ajans kurtarma yöntemi: Elle müdahaleye gerek yok

Eğer yerel sezgiler ve büyük dil modeli bile yeterli sonucu üretemezse, sistem otomatik olarak bir yardım talebi oluşturuyor. Bu talep, sayfanın yapısını ve aday seçicileri içeren bir dosya olarak kaydediliyor. Bir kodlama ajansı bu dosyayı okuyarak gerekli AdapterSpec’i oluşturuyor. Kullanıcı, bu speki doğruladıktan ve cache’e kaydettikten sonra, sistem otomatik olarak çalışmaya devam ediyor. Bu sayede, en karmaşık siteler bile otomatik olarak işlenebiliyor.

Gelecekteki olasılıklar ve iyileştirmeler

pluckmd’nin şu anki en büyük belirsizlik noktası, güven eşiğinin nasıl ayarlanacağı. Yerel sezgilerin ne zaman yeterli olduğunu ve büyük dil modelinin ne zaman devreye girmesi gerektiğini belirlemek, sistemin performansını doğrudan etkiliyor. Gelecekte, bu eşiğin otomatik olarak ayarlanması ya da kullanıcıya özel olarak yapılandırılması mümkün olabilir.

Ayrıca, farklı web sitelerinden veri çıkarmak için benzer yaklaşımlar kullanan projelerle karşılaştırma yapmak ve en iyi uygulamaları paylaşmak da geliştirme sürecine katkı sağlayabilir. pluckmd’nin açık kaynaklı doğası, topluluk katkılarına da açık ve gelecekte daha da genişleyebilir.

Bu proje, içerik çıkarmada kod yerine veri odaklı yaklaşımların ne kadar güçlü olabileceğini gösteriyor. Tek bir veri yapısıyla farklı kaynaklardan tutarlı ve güvenilir veri elde etmek, hem geliştiriciler hem de son kullanıcılar için büyük bir avantaj sağlıyor.

Yapay zeka özeti

Tek bir JSON yapısıyla tüm web sitelerinden içerik çıkarmak mümkün. pluckmd’nin nasıl çalıştığını ve kod yerine veri odaklı yaklaşımların avantajlarını keşfedin.

Yorumlar

00
YORUM BIRAK
ID #HL6IT3

0 / 1200 KARAKTER

İnsan doğrulaması

7 + 8 = ?

Editör onayı sonrası yayına girer

Moderasyon · Spam koruması aktif

Henüz onaylı yorum yok. İlk yorumu sen bırak.