Regex'ten LLM'lere: Web Verisi Çıkarma Yolculuğum
Bir fiyat karşılaştırma aracı geliştirdim. Onlarca e-ticaret sitesinden ürün verilerini çekmem gerekiyordu. Her sitenin yapısı farklıydı. Bazıları rastgele CSS sınıfları kullanıyordu. Bazıları ise içeriği yüklemek için JavaScript kullanıyordu.
Önce klasik yöntemi denedim. Regex ve BeautifulSoup kullandım.
İki sitede işe yaradı. Sonra, bir site düzenini değiştirdi. Kodum bozuldu. Başka bir site ise dinamik içerik kullanıyordu. Verileri kullanmaktan çok, scraper'ları düzeltmekle vakit harcadım.
Sonra yapay zekayı denedim. Ham HTML'i bir LLM'e besledim.
Sonuçlar kötüydü. Çıktı tutarsızdı. Bazen JSON alıyordum, bazen paragraflar. Model veri uyduruyordu. Çok fazla token gönderdiğim için maliyet çok yüksekti.
Orta bir yol buldum. Artık hibrit bir yaklaşım kullanıyorum.
İşte sürecim:
- HTML'i ön işlemeden geçirmek. Scriptleri, stilleri ve navigasyon çubuklarını temizliyorum. Sadece görünür metni tutuyorum. Bu, token sayılarını ve maliyetleri düşürüyor.
- JSON modu veya function calling kullanmak. Bu, LLM'i yapılandırılmış veri döndürmeye zorluyor.
- Yeniden deneme mantığı (retry logic) kullanmak. Eğer JSON hatalıysa, kod tekrar deniyor.
- Sonuçları önbelleğe almak (cache). Aynı sayfa için iki kez ödeme yapmamak adına başarılı çıkarımları URL başına kaydediyorum.
Regex ve BeautifulSoup, statik ve iyi yapılandırılmış siteler için hala en iyisi. Hızlılar ve ücretsizler.
LLM'ler karmaşık ve öngörülemeyen siteler için daha iyi. Ancak maliyetleri düşük tutmak için önce veriyi temizlemelisiniz.
Öğrendiğim dersler:
- Maliyetlerinizi ve başarı oranlarınızı takip edin.
- Gecikme sürenize (latency) dikkat edin. LLM çağrıları milisaniyeler değil, saniyeler sürer.
- Çıktıyı doğrulayın. Fiyatın gerçek bir fiyata benzeyip benzemediğini kontrol edin.
- Hibrit bir sistem kullanın. Kolay siteler için bir parser, karmaşık olanlar için ise bir LLM kullanın.
Bu kurulum bana saatlerce iş kazandırıyor. Bir saatten kısa sürede yeni bir mağaza ekleyebiliyorum.
Siz karmaşık web verileriyle nasıl başa çıkıyorsunuz? Parser'ları mı yoksa LLM'leri mi tercih ediyorsunuz?
İsteğe bağlı öğrenme topluluğu: https://t.me/GyaanSetuAi