Scrapy, Following Links

Kategori: Python , 14 Eylül 2019 , JanFranco


Bu yazımda quotes.toscrapy.com adresinden veri çekeceğiz, her işlem sonunda bir sonraki sayfaya geçeceğiz ve veri çekmeye devam edeceğiz. quotes.py dosyasını aşağıdaki şekilde düzenleyelim:


import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    file = open("quotes.txt", "a", encoding="utf-8")
    start_urls = [
        'http://quotes.toscrape.com/page/1/'
    ]

    def parse(self, response):
        for quote in response.css("div.quote"):
            title = quote.css("span.text::text").extract_first()
            author = quote.css("small.author::text").extract_first()
            tags = quote.css("div.tags a.tag::text").extract()
            
            self.file.write("****************************\n")
            self.file.write(title + "\n")
            self.file.write(author + "\n")
            self.file.write(str(tags) + "\n\n")

        next_url = response.css("li.next a::attr(href)").extract_first()

        if next_url is not None:
            next_url = "http://quotes.toscrape.com" + next_url
            yield scrapy.Request(url=next_url, callback=self.parse)
        else:
            self.file.close()
with anahtar kelimesini kullanmadan dosya işlemlerini yapmamızın sebebi, her döngü adımında dosyanın tekrar açılıp kapanmasını engellemek içindir. Yukarıda direk open() fonksiyonu ile dosyayı açtık, tüm işlemler bittiğinde close() methodu ile dosyayı kapattık.

Bir sonraki sayfanın linkini css selector ile aldık. Eğer bir sonraki sayfa yoksa None değer dönecektir. None değerin kontrolünü yaptık ve recursive bir biçimde bir sonraki sayfa için de aynı işlemleri yaptık. Bu döngü tüm sayfalar sonlanana kadar devam edecektir.


Sonraki Yazı: Scrapy, kitapyurdu top100
Yorumlar

Henüz bir yorum bulunmuyor.
Yorum bırakın