İçeriğe geç
RAKİP VE FİYAT İSTİHBARATI

Herkese açık bir kataloğu fiyat geçmişine çeviren bir hat

Bir rakibi elle kontrol etmek size bir anlık görüntü verir ve onu geçen haftayla karşılaştırmanın hiçbir yolunu bırakmaz. Biz, herkese açık katalogları sayfa sayfa gerçek bir tarayıcıda okuyan, bir sitenin kategori yapısını ve sayfalamasını kendi başına çözen, çıkardığı tarifin gerçekten ürün döndürdüğünü ona güvenmeden önce kanıtlayan ve her turda bir fiyat noktası yazan bir hat kurduk. Ardından gelen rapor bir yığın değil bir fark, ve bir kişi onaylamadan hiçbir yere gitmiyor.

  • SektörPerakende ve e-ticaret
  • Çalışma türüKurum içi platform geliştirme
  • DurumUçtan uca çalışıyor, bazı parçalar hâlâ eksik
  • Fiyat istihbaratı
  • Herkese açık web verisi toplama
  • Rekabet araştırması
  • Veri hatları

Tek döngü: topla, normalleştir, karşılaştır, paketle, onayla

Hat her müşteri için ayrı bir takvimle çalışıyor. Önce rakibin kendi alan adında okumaya değer sayfaları tarıyor, sonra ürün kataloğunun kendisini topluyor: kategori kategori, sayfa sayfa, gerçek bir tarayıcının içinde. Çünkü JavaScript ile kurulan bir katalog, düz bir isteğin döndürdüğü HTML'de yoktur. Yorumlar ve herkese açık paylaşımlar aynı depoya akıyor, böylece çıkan şey yalnızca bir fiyat listesi değil bir rakip tarifi oluyor.

Toplanan her şey aynı biçime normalleştiriliyor. Tutarlar Avrupa, Türkiye ve Amerika Birleşik Devletleri yazımlarında bir sayıya ve bir para birimine çözülüyor. Ürünler kimlikleriyle güncelleniyor, yani yeni bir tur ürünü kopyalamak yerine tazeliyor; ilk görülme ve son görülme tarihleri de yeni ile kayboldu ayrımını hesaplanabilir kılan şey. Fiyat içeren her tur ayrıca bir fiyat noktası yazıyor, rapor bu yüzden bir yığın değil bir fark olabiliyor.

Çalışma alanı iş üstünde: toplanmış kataloglar, yanlarında yorum analizi ve kendi ilerlemesini bildiren toplama işleri. Rakip adları kaydın kendisinde bulanıklaştırıldı.
ZORLUK

Bunu zorlaştıran neydi

Bir rakibi okumak bir veri kazıma problemi değil. Hat şu üç başarısızlığa karşı tasarlandı.

Anlık görüntünün karşılaştırılacağı bir şey yok

Fiyatlara elle bakmak, yazıldığı anda çoktan eskimiş ve arkasında hiçbir şey olmayan bir liste üretir. Kategori ekibinin gerçekte sorduğu soru geçen seferden bu yana neyin değiştiğidir; ne kadar dikkatli kopyalarsanız kopyalayın bu cevaplanmaz, çünkü önceki durum hiç saklanmamıştır.

Katalog sayfa kaynağında değil

Bugünün mağazaları ürün ızgarasını sayfa yüklendikten sonra kuruyor, görselleri tembel yükleme niteliklerine asıyor ve bir kategoriyi platformlarının tercih ettiği yönteme göre sayfalara bölüyor. Bir kategori sayfasının kaynağını okumak size boş bir kabuk verir.

Başarısız bir okuma, boş bir rafla birebir aynı görünür

Tehlikeli olan çökme değil. Temiz biten ve hiçbir şey bulunamadı diyen, ama aslında ağda bir aksaklık yaşamış olan tur. O sonuç gerçek bir değişiklikten ayırt edilemez ve ardından gelen karşılaştırmayı zehirler.

ÇÖZÜM

Ne kurduk

Takvimle çalışan tek bir döngü: kataloğa ulaş, yapısını çöz, değerleri karşılaştırılabilir yap ve farkı bir kişinin imzalayacağı şeye dönüştür.

Kataloğa gerçekten ulaşan toplama

Tarama rakibin kendi alan adında kalıyor, robots.txt'ye uyuyor, kendi hızını sınırlıyor, nereye kadar gideceğini sınırlandırıyor ve fiyat ile ürün sayfalarını genel sayfalardan önce ziyaret ediyor. Katalog toplaması ayrı bir iş: çıkarma işlemi işlenmiş sayfanın içinde çalışıyor, çünkü JavaScript ile kurulan bir ızgara ancak orada var oluyor.

  • Aynı alan adında kalan, robots.txt'ye uyan, kendi hızını sınırlayan ve önce ticari sayfaları okuyan tarama.
  • Otomatik yedeklemeli üç toplama motoru: eksik bir isteğe bağlı bağımlılık taramayı bozmuyor, yalnızca kalitesini düşürüyor.
  • Sorgu parametreli sayfalama, sonraki bağlantılı sayfalama, tek sayfalık listeler ve sonsuz kaydırma; hangisi olduğu varsayımla değil siteyi yoklayarak belirleniyor.

Modelin önerdiği, kodun kanıtladığı yapı

Bir sitenin gerçek kategorileri kendi bağlantılarından ve site haritasından çıkarılıp sınıflandırılıyor. Hiçbir şey bu sınıflandırmaya güvenilerek kabul edilmiyor: bir çöz ve çıkar kapısı, önerilen tarifin iddia ettiği sayfada gerçekten ürün döndürdüğünü göstermek zorunda.

  • Kategori adayları sitenin kendi gezinme yapısından ve site haritasından geliyor, her biri kullanılmadan önce doğrulanıyor.
  • Önerilen bir çıkarma tarifine ancak ürün döndürdüğü gösterildikten sonra güveniliyor, sınıflandırma turunda sıkı bir uydurma yasağı var.
  • Ad ve fiyat çıkarımı bir yedek zincirinden geçiyor ve en kısa temiz eşleşmeyi tercih ediyor, böylece bütün bir ürün kartı ad sanılmıyor.

Gerçekten karşılaştırılabilen değerler

Sayfadaki fiyat; bir para birimi işareti, ülkeden ülkeye anlamı değişen bir binlik ayıracı ve çoğu zaman yanında duran bir indirim rozetiyle birlikte gelen bir metindir. Her şey saklanmadan önce bir tutara ve bir para birimine çözülüyor, markalar ise tahmin etmeyi reddeden özenli bir listeden okunuyor.

  • Tutarlar Avrupa, Türkiye ve Amerika Birleşik Devletleri sayı yazımlarında çözülüyor, para birimi de yanında okunuyor.
  • Yüzde rozeti ayrıştırmadan önce sökülüyor ve para birimine bağlı son tutar kazanıyor, böylece indirim asla fiyat olarak saklanmıyor.
  • Ürünler turlar arasında kimlikleriyle tekilleştiriliyor, yeniden okuma ürünü kopyalamıyor güncelliyor.

Yığın değil fark olan bir rapor, ve onu imzalayan bir kişi

Fiyat içeren her tur bir geçmiş noktası yazıyor, dolayısıyla bir sonraki zaten bir karşılaştırma. Değişim raporu diskte olandan hesaplanıyor: model çağrısı yok, ağ yok, yeni tablo yok. Oluşturma işlemi onay bekleyen bir çıktı bırakıyor ve gönderen tek kod yolu onay.

  • Yukarı ve aşağı hareket edenler, yeni ürünler, kaybolan ürünler ve yeni yorumlar, hepsi belirlenimci biçimde hesaplanıyor.
  • Bir hesap tablosu veri paketi ve bir sunum destesi, aynı girdiden bayt bayt aynı dosya olarak üretiliyor.
  • Bir kişi onaylamadan hiçbir şey müşterinin gelen kutusuna ulaşmıyor, posta sağlayıcısı tanımlı değilse gönderim, olmamış bir gönderimi kaydetmek yerine reddediyor.
MÜHENDİSLİK

Raporu okumaya değer kılan kararlar

Etkileyici olmakla değil, doğru olmakla ilgili dört seçim.

Başarısız bir okuma boş bir raf değildir

İsteğin başarısız olması, sayfanın yüklenip boş çıkması ve sayfada ürün olması kodda tek bir sonuç değil üç ayrı sonuç. Bir tur bu kanıta bakarak kendini tamamlandı, kısmi ya da başarısız diye işaretliyor, böylece geçici bir ağ sorunu asla içi boş temiz bir sonuç olarak gelmiyor.

Durma koşulu koda ait

Boşluk tespiti kural tabanlı ve tur başına sabit bir üst sınırı var, isteğe bağlı model eleştirmeni ise onun üzerine ekleniyor ve varsayılan olarak kapalı. Bir tarama, biri bunu bilerek açana kadar modelde hiçbir maliyet üretmiyor ve işin ne zaman bittiğine hiçbir dil modeli karar vermiyor.

Veritabanından bağımsız sıralama

Zaman sırası, ekleme sırasında değil okuma anında yakalanan mikrosaniyelik bir zaman damgasında duruyor, rastgele bir kimlik yalnızca son çare eşitlik bozucu. Bir fiyat geçmişi bu yüzden altındaki veritabanı hangisi olursa olsun aynı okunuyor.

Tek bir darboğazda yalıtım

Her okuma ve yazma tek bir kapsam darboğazından geçiyor, veritabanının kendi satır güvenliğiyle destekleniyor ve kendi çalışma rolü bunu aşabilecek durumdaysa servis başlamayı reddediyor. Karşılaştırma motoru bu sınırı yeniden kurmuyor, devralıyor.

ETKİ

Ne değişti

Niteliksel, çünkü bu projenin ürettiği şey ölçülmüş bir sonuç değil çalışan bir döngü.

Geçmiş

Anlık görüntü yerine karşılaştırma

İlk tur bir katalog üretiyor. Ondan sonraki her tur bir fark üretiyor, çünkü arkasındaki fiyatlar okundukları tarihlerle birlikte zaten diskte.

Dürüst

Neyi kaçırdığını söyleyen turlar

Bir şeyi okuyamayan tur bunu söylüyor ve kendini kısmi diye işaretliyor. Sonraki hiçbir adım, boş bir bölümün rakibin değişmesi mi yoksa bir isteğin düşmesi mi olduğunu tahmin etmek zorunda kalmıyor.

Onaylı

Müşteriden önce bir kişi

Raporu oluşturmak ile göndermek bilerek ayrılmış iki adım. Bugüne kadar hiçbir şey yalnızca takvim tetikledi diye gitmedi, bir sağlık sondası da tüm döngüyü ağa dokunmadan ve modelde hiçbir harcama yapmadan baştan sona yürütüyor.

Son güncelleme:

İzlemeye değer bir kataloğunuz mu var?

Önemsediğiniz kaynakları ve işe yarar bir raporun ne söylemesi gerektiğini anlatın. Toplamanın kapsamını dürüstçe çıkarırız, reddedeceğimiz kısımlar dahil.

Görüşme başlatın