📚 Bu yazı bir serinin parçası — Web Scraping İleri Seviye
- Bölüm 1: Web Scraping İleri #1: Sayfalama ve Çok Sayfalı Veri (bu yazı)
- Bölüm 2: Web Scraping İleri #2: JavaScript'li Siteler ve Selenium
- 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.sleepkoyun — 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.