Web Geliştirme

ASP.NET Core ve Web Scraping: İş Süreçlerini Otomatize Etmek

U

Umut Özdemir

5 okuma
ASP.NET Core ve Web Scraping: İş Süreçlerini Otomatize Etmek

Manuel veri girişinden kurtulup, Bellona fiyat listelerini anlık olarak çeken bir otomasyon sistemini nasıl inşa ettim?

Giriş: Rutin İşlerin Dijital Dönüşümü

Profesyonel iş hayatında bazen en basit görünen işler, en çok zaman alan engellere dönüşebilir. Bellona mağazasında fiyat teklifi hazırlarken yaşadığımız süreç tam olarak buydu. Yüzlerce ürünün güncel fiyatlarını manuel olarak kontrol etmek ve müşteriye özel teklif formuna dökmek hem hata payını artırıyor hem de ciddi bir zaman kaybına neden oluyordu. Bir yazılımcı olarak bu soruna çözümüm netti: Otomasyon.

Problem: Manuel Veri Girişinin Verimsizliği

Müşteriye teklif sunarken resmi web sitesindeki güncel fiyatlara sadık kalmak zorundayız. Ancak kampanya dönemlerinde fiyatlar hızla değişebiliyor. Her ürünü tek tek aratıp kopyalamak yerine, bu veriyi doğrudan kaynağından (official web sitesinden) çekecek bir köprü kurmaya karar verdim.

Çözüm: .NET 8 ve HtmlAgilityPack Entegrasyonu

Bu projede, .NET 8 mimarisini kullanarak bir Web Scraping (Veri Kazıma) aracı geliştirdim. İşte projenin teknik temelini oluşturan adımlar:

  1. Veri Kaynağı: Bellona'nın kurumsal web sitesindeki ürün sayfaları.

  2. Aracı Kütüphane: HTML yapısını parse etmek (ayrıştırmak) için HtmlAgilityPack kütüphanesini kullandım.

  3. Mimari: Kullanıcı bir ürün kodu girdiğinde, sistem arka planda ilgili URL'ye bir HttpRequest gönderiyor ve dönen HTML içindeki fiyat, ürün adı ve özellik bilgilerini ayıklıyor.

Teknik Detaylar ve Karşılaşılan Zorluklar

Web scraping yaparken en büyük zorluk, sitenin DOM yapısındaki (HTML hiyerarşisi) karmaşıklıktır. Fiyat bilgisinin bazen bir span, bazen ise bir div içinde gelmesi durumunu XPath ve LINQ sorguları ile dinamik hale getirdim.

Örnek Bir Kod Bloğu:

C#
var web = new HtmlWeb();
var doc = web.Load(productUrl);
var priceNode = doc.DocumentNode.SelectSingleNode("//span[@class='price-value']");
string currentPrice = priceNode?.InnerText.Trim();

Bu basit görünen mantık, teklif hazırlama süresini yaklaşık %80 oranında kısalttı. Artık sadece ürün kodunu girip "Ekle" butonuna basmak, profesyonel bir PDF teklifi oluşturmak için yeterli hale geldi.

Sonuç: Yazılımın Gücü

Bu proje bana bir kez daha gösterdi ki; yazılım sadece kod yazmak değil, etrafımızdaki sorunlara akılcı çözümler üretmektir. Bellona'daki iş sürecimizi dijitalleştiren bu küçük uygulama, şu an günlük operasyonlarımızın vazgeçilmez bir parçası oldu.

Daha Fazla Insight İster Misiniz?

Yazılım mimarileri ve dijital stratejiler üzerine en yeni yazılarımdan haberdar olun.