Scrapy ile crawl ettiğiniz internet sitelerinde, özellikle de listeleme sayfalarında sayfalama işlemi olabilir. Örneğin bir e-ticaret sitesindeki ürünleri tararken her bir sayfada 12 ürün görüntüleniyor ve bu listeleme 100 sayfa devam ediyor olabilir. 100 kere url kopyalayarak crawl işlemini manuel olarak tekrarlamak çözüm olmayacağı için scrapy'de her bir tarama işleminin tamamlanmasının ardından bir sonraki sayfaya nasıl geçilebileceğine dair bir kod eklemek yerinde olacaktır.
Listeleme sayfalarında takip edebileceğiniz sayfalama işlemleri ya query'de artan bir index numarası olarak yakalanabilir, ya da sayfada bir yerlerde next/sonraki gibi bir link olabilir. Scrapy ile tarama yaparken de "sonraki" linkinin olup olmamasına göre sonraki sayfanın var olup olmadığını tespit edebilir ve varsa sonraki sayfayı tarayarak işlemlerin kesilmeden otomatik olarak devamını sağlayabiliriz.
import scrapy
import logging
class ...(scrapy.Spider):
...
def parse(self, response):
...
next_page = response.xpath("//...a[@class='sonrakisayfa']/@href").get()
if next_page:
yield scrapy.Request(url=next_page, callback=self.parse)
Editör editi: sitedeki bazı diğer benzer yazılar için;
bkz: Web Scraping ile Neler Yapılabilir? Örnek Scraping Projeleri
bkz: Web Scraping Nedir?
bkz: Scrapy'de her bir tarama öncesi erteleme eklemek
bkz: Anaconda Navigator'a Scrapy Kurmak
bkz: Python ve Scrapy ile UTF-8 karakter hatalarını düzeltmek
bkz: Scrapy Nedir ve Nasıl Kullanılır?