0Pricing
Python Academy · Ders

Scrapy Örümceği Oluşturma

Bir Scrapy projesi oluşturun, örümcek yazın ve bağlantıları otomatik olarak izleyin.

Scrapy Örümceği Oluşturma, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Scrapy Nedir

Scrapy; yerleşik asenkron tarama, öğe işlem hatları, ara yazılımlar ve dışa aktarıcılar sunan, kapsamlı özelliklere sahip bir web kazıma çatısıdır.

# pip install scrapy

# Create a project:
# scrapy startproject myspider

# myspider/
#   scrapy.cfg
#   myspider/
#     settings.py
#     spiders/
#       quotes_spider.py

Bir Spider Oluşturma

scrapy.Spider sınıfından türeyin, name ve start_urls değerlerini ayarlayın, ardından parse() yöntemini uygulayın.

import scrapy

class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = ["https://quotes.toscrape.com"]

    def parse(self, response):
        for quote in response.css("div.quote"):
            yield {
                "text": quote.css("span.text::text").get(),
                "author": quote.css("small.author::text").get(),
            }

CSS ve XPath Seçicileri

Veri çıkarmak için response.css("selector") veya response.xpath("//xpath") kullanın. .get() ilk eşleşmeyi, .getall() ise tüm eşleşmeleri döndürür.

def parse(self, response):
    # CSS:
    titles = response.css("h2.title::text").getall()

    # XPath:
    links = response.xpath("//a/@href").getall()

    yield {"titles": titles, "links": links}

Bağlantıları İzleme

Bir bağlantıyı izlemek ve sonraki sayfayı ayrıştırmak için bir scrapy.Request üretin.

import scrapy

class Spider(scrapy.Spider):
    name = "crawler"
    start_urls = ["https://quotes.toscrape.com"]

    def parse(self, response):
        for quote in response.css("div.quote"):
            yield {"text": quote.css("span.text::text").get()}

        next_page = response.css("li.next a::attr(href)").get()
        if next_page:
            yield response.follow(next_page, self.parse)

Öğeler ve ItemLoaders

Kazınan verileri yapılandırmak için Item sınıflarını tanımlayın; alanları temizlemek ve dönüştürmek için ItemLoader kullanın.

import scrapy

class ProductItem(scrapy.Item):
    name  = scrapy.Field()
    price = scrapy.Field()
    url   = scrapy.Field()

def parse(self, response):
    item = ProductItem()
    item["name"]  = response.css("h1::text").get(strip=True)
    item["price"] = response.css(".price::text").re_first(r"[\d.]+")
    item["url"]   = response.url
    yield item

Spider'ı Çalıştırma

Proje dizininden çalıştırın. JSON, CSV veya özel bir işlem hattına aktarın.

# Run and print to console:
# scrapy crawl quotes

# Save to JSON:
# scrapy crawl quotes -o quotes.json

# Save to CSV:
# scrapy crawl quotes -o quotes.csv

# Scrapy shell for interactive testing:
# scrapy shell "https://quotes.toscrape.com"

Ayarlar: DOWNLOAD_DELAY ve CONCURRENT_REQUESTS

Sunucuları aşırı yüklemekten kaçınmak için gecikmeler ekleyin ve eşzamanlı istekleri sınırlayın.

# settings.py
DOWNLOAD_DELAY = 1          # 1 second between requests
CONCURRENT_REQUESTS = 8     # max 8 at a time
CONCURRENT_REQUESTS_PER_DOMAIN = 2
ROBOTSTXT_OBEY = True       # respect robots.txt

Ara Yazılımlar

Ara yazılımlar istekleri ve yanıtları yakalar. Kullanıcı aracısını döndürmek, yeniden denemek ve çerezleri yönetmek için yerleşik ara yazılımları kullanın.

# settings.py
DOWNLOADER_MIDDLEWARES = {
    "scrapy.downloadermiddlewares.retry.RetryMiddleware": 550,
    "scrapy.downloadermiddlewares.useragent.UserAgentMiddleware": None,
    "myspider.middlewares.RotateUserAgentMiddleware": 400,
}

Öğe İşlem Hatları

İşlem hatları, kazıma işleminden sonra öğeleri işler: verileri temizler, doğrular, yinelenenleri kaldırır ve bir veritabanına kaydeder.

# pipelines.py
class CleanPipeline:
    def process_item(self, item, spider):
        item["name"] = item["name"].strip()
        return item

class DBPipeline:
    def open_spider(self, spider):
        self.conn = connect_db()

    def process_item(self, item, spider):
        self.conn.insert(dict(item))
        return item

Oturum Açmayı Ele Alma

Bir oturum açma formu göndermek ve oturum çerezini korumak için Scrapy'nin FormRequest sınıfını kullanın.

import scrapy

class AuthSpider(scrapy.Spider):
    name = "auth"
    login_url = "https://example.com/login"

    def start_requests(self):
        yield scrapy.Request(self.login_url, self.login)

    def login(self, response):
        yield scrapy.FormRequest.from_response(
            response,
            formdata={"user": "me", "pass": "secret"},
            callback=self.parse
        )

JavaScript Sayfaları için scrapy-playwright

scrapy-playwright eklentisi, JavaScript ile oluşturulan sayfalar için Playwright'ı Scrapy'ye entegre eder.

# pip install scrapy-playwright
# playwright install

# settings.py:
# DOWNLOAD_HANDLERS = {
#     "http": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
#     "https": "scrapy_playwright.handler.ScrapyPlaywrightDownloadHandler",
# }

# In spider:
# yield scrapy.Request(url, meta={"playwright": True})

Hızlı Kontrol

Bir Scrapy Spider'ında response.follow(href, callback) ne yapar?

Özet

Scrapy Spider'ları scrapy.Spider sınıfından türetilir, start_urls değerlerini tanımlar ve parse() içinden öğeler veya başka Request nesneleri üretir. CSS/XPath seçicilerini kullanın, DOWNLOAD_DELAY ile sunuculara aşırı yük bindirmeyin ve verileri kalıcı olarak saklamak için işlem hatlarından yararlanın.

Sıkça Sorulan Sorular

“Scrapy Örümceği Oluşturma” dersi ücretsiz mi?

Evet — “Scrapy Örümceği Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Scrapy Örümceği Oluşturma” dersinde ne öğreneceğim?

Bir Scrapy projesi oluşturun, örümcek yazın ve bağlantıları otomatik olarak izleyin. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“Scrapy Örümceği Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. requests ve httpx ile HTTP İstekleri
  2. BeautifulSoup ile HTML Ayrıştırma
  3. Scrapy Örümceği Oluşturma
  4. JavaScript ve Tarama Karşıtı Önlemleri Ele Alma
← Python Academy Sayfasına Dön