Python İle Rakip Sitenin Stok Analizi

Rakip e-ticaret sitelerinin stokta olmayan ürünlerini öğrenerek organik trafiğinizi arttırabilirsiniz. Bu, yeni başladığınız veya bir süredir üzerinde çalıştığınız projelerinizde optimizasyon önceliklerinizi değiştirmenize yardımcı olabilir. Ayrıca, hızlı aksiyon almak için SEM ekibiniz ve danışmanlık sağladığınız şirketle bu raporları paylaşabilirsiniz.

Örneğin, ayakkabı satışı yapan 37numara.com e-ticaret sitesinin stokta olmayan ürünlerini Python Advertools modülü kullanarak tarayabilir ve stokta olmayan tüm ürünlerin URL’lerini CSV çıktısı olarak alabiliriz. Bu özelleştirilmiş bir tarama olacak ve ben PyCharm geliştirme ortamını kullanacağım.

Stok Durumu İçin Belirli CSS Alanını Taramaya Dahil Etmek

Hedef sitemizin stokta olmayan herhangi bir ürününün URL’ni buluyor ve bu ürünün “stokta yok” kısmına ait css bilgilerini inceliyoruz. Bunun için chrome tarayıcısını kullanacağım.

Tarayacağımız Ürün Sayfalarının “Stokta Yok” Kısmı

Yukarıda görselde görüldüğü gibi bir ürün bulalım ve bu ürünün “Stokta yok” kısmının css kodlarını inceleyelim.

“Stokta yok” olan ürünlerin css kodları

“.description span” arasında bulunan verileri çekeceğiz. Bu elementin arasında 2 bilgi mevcut. Birisi stok numarası diğeri stok bilgisi. Şimdi Python geliştirme ortamımıza geçelim ve advertools kütüphanemizi dahil ederek tarama kodlarımızı yazalım.

from advertools import crawl
CSS = {
    'stok':'.description span'
}
crawl('https://www.37numara.com/',
      '37numara-com.jl',follow_links=True,
      css_selectors=CSS, custom_settings={'CLOSESPIDER_PAGECOUNT': 2500})
  • ‘stok’:’.description span’ tanımlamasıyla stok isminde bir sütun oluşturup, taradığımız sayfalarda ‘.description span’ elementinin arasında kalan bölümleri bizim için kaydedecek.
  • ‘https://www.37numara.com/’ URL’inden taramayı başlatacağız.
  • Verilerimizi ’37numara-com.jl’ dosyası olarak kaydedeceğiz.
  • “follow_links=True” ile keşfidilen linkleri takip etmesini söyleyeceğiz.

Tüm siteyi taramak vakit alabilir bu nedenle “custom_settings={‘CLOSESPIDER_PAGECOUNT’: 2500}” değeri ile 2500 url taradıktan sonra örümceğin durmasını istedim (varsayılan değer olarak bir sınırlama yoktur). Taramamızı gerçekleştirelim ve verilerimize göz atalım.

import pandas as pd
site = pd.read_json('37numara-com.jl', lines=True)
site = site[['stok','url']]
print(site.head(100))
Verilerimizde bulunan stok ve URL sütunları.

Yukarı görseli yorumlayalım.

  • NaN değeri olan sayfalar ana sayfa, kategori gibi sayfalar. Kısaca stok durumunu kontrol etmemiz için belirlediğimiz CSS kodlarının kullanılmadığı sayfalar.
  • Beyaz renkle daire içine aldığım alan, ürün sayfası olup “stok yok” bilgisinin verilmediği sayfalar bu nedenle örümceğimiz sadece ürün kodunu verilerimize dahil etmiş. Kısaca stokta olan ürünler.
  • Kırmızı daire içine aldığım alan ise bizim ilgileneceğimiz alan. Örümceğimiz belirlediğimiz CSS kodları arasında bulunan ürün kodu ve “Stokta yok” bilgisini çekiyor. Kısaca stokta olmayan ürünler.

Stokta Olmayan Ürün URL’lerini CSV Dosyası Olarak Kaydetmek

Advertools sütuna ait birden çok değeri “@@” işaretlemesi ile ayırıyor. Bizde bu kullanımdan yararlanarak stok sütununda bulunan “@@” ile ayırılmış verileri stokta yok olarak varsayarak filtreleme yapacağız.

site = pd.read_json('37numara-com.jl', lines=True)

site = site[site['stok'].str.contains('@@', na=False)]['url']
site.to_csv('stokta-yok.csv')

Kodlarımızı çalıştıralım ve “stokta-yok.csv” dosyamıza göz atalım.

“stokta-yok.csv” dosya içeriği.

Sonuç

Stokta olmayan tüm ürünlerin URL’lerini almış bulunuyoruz. Dilerseniz stokta olmayan ürün sayfaları için çeşitli verilerileri analiz edebilirsiniz. Bunun için python ile site içi seo analizi başlıklı yazıma göz atabilirsiniz. Bir sonraki örnek çalışmamızda görüşmek üzere.