Kitapyurdu ve Kitapsepeti sitelerindeki kitapları kazıyıp, MongoDB veritabanına kaydetmek.
- Python 3.11.4
- BeautifulSoup (bs4)
- MongoDB (PyMongo)
Projeyi klonlayın.
git clone https://github.com/aybasaran/smartmaple-assignment.git
Proje dizinine gidin
cd smartmaple-assignment
Gerekli paketleri yükleyin.
pip install -r requirements.txt
Uygulamayı çalıştırın.
python app.py
Kitapyurdu.com ve Kitapsepeti.com siteleri static bir site olduğu için, requests kütüphanesi ile sayfaları istek atarak alabiliyoruz. Daha sonra BeautifulSoup kütüphanesi ile sayfaları parse ediyoruz. Öncelikle sitede tüm kitapları tek seferde listelemek için url olup olmadığını araştıyoruz. Kendi araştırmalarım sonucunda kitapyurdun'da index.php?route=product/category&filter_category_all=true&path=1&filter_in_stock=1&filter_in_shelf=1&sort=purchased_365&order=DESC&limit=100 gibi bir url in yapıcağımız işe uygun olduğunu fark ediyorum.Kitapsepeti.com'da /roman?stock=1 üzerinden ilerliyor olacağız. İki site'de öncelikle kaç adet sayfa olduğunu bulmak için ilgili pagination elementlerinin içini scrape ederek gerekli veriyi parse ediyoruz. Bunu sayfaları gezinmekte kullanacağız. Daha sonra sayfaları gezerek kitapların bulunduğu div elementlerini scrape ediyoruz. Bu elementlerin içindeki bilgileri parse ederek, kitap bilgilerini elde ediyoruz. Daha sonra bu bilgileri MongoDB veritabanına kaydediyoruz. Bu işlemi yaparken, her sayfada bir kaldığımız yerin kaydedilmesini sağlıyoruz. Böylece program herhangi bir sebepten dolayı durduğunda, kaldığı yerden devam edebiliyor.
- Kitap ve pagination bilgilerinin kazıma
- Kitap bilgilerini MongoDB veritabanına kaydetme
- Her Sayfa başlangıcında kaldığı yerin kaydedilmesi
Kazılmış Örnek Kitaplar - Kitapyurdu Kazılmış Örnek Kitaplar - Kitapsepeti