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.txtpython -m Scripts.category_manager KY --parts 5 --output-dir Categories
python -m Scripts.category_manager BKM --parts 5 --output-dir Categoriespython -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 5python -m Scripts.data_combiner KY --job-count 5
python -m Scripts.data_combiner BKM --job-count 5python -m Scripts.dataset_uploadpython -m Scripts.reportProje, 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.pydosyası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.pydosyası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