Kitap satış sitelerinden veri kazıma (web scraping) ile kitap bilgilerini toplayan modüler bir sistem.
.github/workflows/
: GitHub Actions workflow dosyalarıCategories/
: Kazıma için kullanılan kategori JSON dosyalarıData/
: Veri dosyaları (referans CSV'ler)Dataset/
: Kazınan veri setleri (çıktı dosyaları)logs/
: Log dosyalarıReport/
: Haftalık oluşturulan analiz raporları ve dashboard'larScripts/
: Python betikleriadditional.py
: Yardımcı fonksiyonlar ve loglama yapılandırmasıcategory_manager.py
: Kategori kazıma ve bölme işlemleridata_combiner.py
: Parçalı verileri birleştirme işlemleridataset_download.py
: Veri setlerini Kaggle'dan indirmedataset_upload.py
: Veri setlerini Kaggle'a yüklemerename_log.py
: Log isimlerini yeniden adlandırmareport.py
: Raporlama ve dashboard oluşturma işlemlerirun_scraper.py
: Kazıyıcı çalıştırma ana modülüSelenium.py
: Selenium ile tarayıcı otomasyonuscrapers/
: Kazıyıcı sınıflarbase_scraper.py
: Temel kazıyıcı sınıfky_scraper.py
: KitapYurdu kazıyıcısıbkm_scraper.py
: BKM Kitap kazıyıcısı
requirements.txt
: Gerekli Python paketleri
Gerekli paketleri yükleyin:
pip install -r requirements.txt
python -m Scripts.category_manager KY --parts 5 --output-dir Categories
python -m Scripts.category_manager BKM --parts 5 --output-dir Categories
python -m Scripts.run_scraper KY --matrix-id 1 --categories-file Categories/categories_1.json --workers 5
python -m Scripts.run_scraper BKM --matrix-id 1 --categories-file Categories/categories_1.json --workers 5
python -m Scripts.data_combiner KY --job-count 5
python -m Scripts.data_combiner BKM --job-count 5
python -m Scripts.dataset_upload
python -m Scripts.report
Proje, GitHub Actions ile aşağıdaki işlemleri otomatik olarak gerçekleştirebilir:
- Kategorileri kazıma ve bölümlere ayırma
- Paralel olarak veri kazıma işlemlerini çalıştırma
- Kazınan verileri birleştirme
- Veri setini Kaggle'a yükleme
- Haftalık analiz raporu ve dashboard oluşturma (her Pazar otomatik çalışır)
Sistem otomatik olarak her hafta Pazar günü aşağıdaki özelliklere sahip grafik dashboard'lar oluşturur:
- Siteler arası fiyat değişimi karşılaştırması
- Ortalama değişim yüzdeleri ve ürün sayıları
- Kategori bazında fiyat değişimleri
- Site ve kategori karşılaştırmaları
- En çok fiyatı artan 10 kitap
- En çok fiyatı düşen 10 kitap
- İlk ve son fiyat karşılaştırmaları
- Zaman içindeki fiyat değişimleri
- Kategori ve site bazlı haftalık değişim grafikleri
- Filtreleme ve sıralama özellikleri
- Arama, site filtresi ve değişim türüne göre filtreleme
Yeni bir kitap satış sitesi eklemek için:
-
Scripts/scrapers/
dizinindebase_scraper.py
dosyasından türeyen yeni bir sınıf oluşturun:from Scripts.scrapers.base_scraper import BaseScraper class NewStoreScraper(BaseScraper): def __init__(self, matrix_id=None, workers_count=5): super().__init__("NEW_STORE_CODE", matrix_id, workers_count) # Site özel ayarlar # Gerekli metotları uygulayın: def scrape_categories(self): # Kategori kazıma kodu pass def get_pagination(self, soup): # Sayfalama kodu pass def generate_pagination_urls(self, base_url, page_count): # Sayfa URL'leri oluşturma kodu pass def scrape_products(self, soup): # Ürün kazıma kodu pass
-
Yeni kazıyıcıyı
Scripts/run_scraper.py
dosyasına ekleyin -
Gerekirse, GitHub Actions workflow dosyalarını güncelleyin
- Kazıma işlemleri paralel threadler kullanarak optimize edilmiştir
- Kategori bölümlendirme ile dağıtık çalışma desteklenir
- Log yapılandırması merkezi olarak yönetilir
- Dashboard'lar interaktif HTML dosyaları olarak oluşturulur ve GitHub'a otomatik commit edilir