📚 Bu yazı bir serinin parçası — Web Scraping İleri Seviye
  1. Bölüm 1: Web Scraping İleri #1: Sayfalama ve Çok Sayfalı Veri (bu yazı)
  2. Bölüm 2: Web Scraping İleri #2: JavaScript'li Siteler ve Selenium
  3. Bölüm 3: Web Scraping İleri #3: Engeller, Captcha ve IP Limitleri

Temel kazımayı öğrendiyseniz sıradaki engel şu: veri tek sayfada değil, onlarca hatta yüzlerce sayfaya yayılmış. Bu yazıda sayfalama (pagination) ile tüm sayfaları otomatik gezmeyi göreceğiz.

Sayfa yapısını anlamak

Çoğu sitede sayfa numarası URL'de görünür: ?page=1, ?page=2 ... veya /page/2/ gibi. Önce tarayıcıda 2. sayfaya geçip URL'in nasıl değiştiğine bakın.

Tüm sayfalarda dönmek

import requests
from bs4 import BeautifulSoup
import time

taban = "https://books.toscrape.com/catalogue/page-{}.html"
tum_veri = []

for sayfa in range(1, 51):          # 1'den 50'ye kadar
    url = taban.format(sayfa)
    yanit = requests.get(url, timeout=15)
    if yanit.status_code == 404:    # sayfa yoksa dur
        break

    corba = BeautifulSoup(yanit.text, "html.parser")
    for kart in corba.select("article.product_pod"):
        tum_veri.append(kart.h3.a["title"])

    print("Sayfa", sayfa, "islendi, toplam:", len(tum_veri))
    time.sleep(1)                   # sunucuyu yormamak icin bekle

print("Bitti. Toplam kayit:", len(tum_veri))
💡

Kaç sayfa olduğunu bilmiyorsanız, while True döngüsü kurup 404 veya boş sonuç gelince break ile durabilirsiniz. Yukarıda ikisini birden kullandık.

İki önemli kural

  • Her istek arasına time.sleep koyun — hem nazik olun hem engellenmeyin.
  • Veriyi döngü bittikten sonra değil, arada bir kaydedin ki bağlantı koparsa baştan başlamayın.

Bir sonraki yazıda daha zor bir duruma bakacağız: veriyi JavaScript ile yükleyen siteler — burada requests tek başına yetmez.