Geonode logo
Carl Gamutan

Carl Gamutan

Güncellenme: 7 Ekim 2026

Yayınlanma: 13 Şubat 2023

Scrapy İçin Yeni Başlayanlara Rehber

Scrapy, internetteki herkes tarafından ücretsiz olarak kullanılabilen açık kaynaklı bir web tarama çerçevesidir. Scrapy, esas olarak web taraması ve web veri toplama amacıyla kullanılır. Herhangi bir web sayfasından veri çıkarmak için hızlı ve kolay bir yöntemdir ve şu anda Zyte tarafından geliştirilmektedir.

Scrapy, internetteki herkes tarafından ücretsiz olarak kullanılabilen açık kaynaklı bir web tarama çerçevesidir. Scrapy, esas olarak web taraması ve web veri toplama için kullanılır. Herhangi bir web sayfasından veri çıkarmak için hızlı ve kolay bir yöntemdir ve şu anda Zyte tarafından geliştirilmektedir.

Scrapy'yi Yükleme

Scrapy'yi yüklemek için Python 3.7 veya daha yeni bir sürüme ihtiyacınız vardır. Ayrıca, sistem paketlerinizle ortaya çıkabilecek olası çakışmaları önlemek için, Scrapy'yi özel bir virtualenv ortamına yüklemeniz önerilir.

İndir Scrapy'yi tercih ettiğiniz platformda.

Scrapy'yi kurmak için Anaconda veya Miniconda kurmanız, Python'u açmanız ve şu komutu çalıştırmanız gerekir:

conda install -c conda-forge scrapy

Alternatif olarak şunu da çalıştırabilirsiniz:

pip install Scrapy

Ubuntu sistemi kullanıyorsanız, önce şu bağımlılıkların tümünü yüklemeniz gerekir:

sudo apt-get install python3 python3-dev python3-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev

macOS sistemi kullanıyorsanız, Xcode komut satırı araçlarını yüklemeniz gerekir. Bir terminal penceresi açıp şu komutu çalıştırmanız gerekir:

xcode-select --install

Tebrikler! Cihazınıza Scrapy'yi yüklediniz. Artık bir web sitesini tarayıp verilerini çıkarmayı deneyebiliriz.

Bir Scrapy Projesi Başlatma

Yeni bir Scrapy projesi başlatmak için, kodunuzun depolanmasını istediğiniz bir dizin belirtmeniz gerekir. Şu komutu çalıştırmanız gerekir:

scrapy startproject scrapetest

Bu komutu çalıştırdığınızda “scrapetest” adlı bir dizin oluşturulur ve içinde şunlar bulunur:

_scrapetest/ scrapy.cfg # dağıtım yapılandırma dosyası

scrapetest/             # projenin Python modülü; kodunuzu buradan içe aktaracaksınız
    __init__.py

    items.py          

    middlewares.py   

    pipelines.py      

    settings.py       

    spiders/          # daha sonra örümceklerinizi yerleştireceğiniz dizin
        __init__.py

_

Bir Scrapy projesi başlattıktan sonra, şimdi bir Örümcek oluşturmanız gerekiyor. Örümcek, Scrapy'nin bir web sayfasından bilgi çıkarmak için kullandığı araç olduğu için gereklidir. Örnek olarak, “quotes.toscrape.com” web sitesini tarayacağız.

Öncelikle şu kodu çalıştırmanız gerekir:

_import scrapy

class QuotesSpider(scrapy.Spider): name = "test" # Spider adları, oluşturduğunuz her spider için benzersiz olmalıdır

def start_requests(self):
    urls = [
        'https://quotes.toscrape.com/page/1/',
        # Bu URL'leri,

veri toplamak istediğiniz web sayfalarına göre değiştirin 'https://quotes.toscrape.com/page/2/', ] for url in urls: yield scrapy.Request(url=url, callback=self.parse)

def parse(self, response):
    page = response.url.split("/")[-2]
    filename = f'quotes-{page}.html'
    with open(filename, 'wb') as f:
        f.write(response.body)
    self.log(f'{filename} dosyası kaydedildi')

_

Örümceğin taramaya başlaması için şunu çalıştırmanız gerekir:

scrapy crawl test

Ardından, “quotes.toscrape.com” web sitesini taradığınızı gösteren bir çıktı almalısınız.

Bir web sayfasından belirli verileri çıkarmak istiyorsanız, Python'daki “yield” anahtar sözcüğünü kullanabilir ve şu kodu çalıştırabilirsiniz:

_import scrapy

class QuotesSpider(scrapy.Spider): name = "test" start_urls = [ 'https://quotes.toscrape.com/page/1/', 'https://quotes.toscrape.com/page/2/', ]

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(),
            'tags': quote.css('div.tags a.tag::text').getall(),
        }

_

Bu kod, taradığınız web sayfasından metinleri, yazarı ve etiketleri çıkarır; bunlar günlüğünde gösterilir.

Sadece belirli sayfalar yerine bir web sitesindeki tüm sayfaları taramak istiyorsanız, şunu çalıştırabilirsiniz:

_import scrapy

class QuotesSpider(scrapy.Spider): name = "test" start_urls = [ 'https://quotes.toscrape.com/page/1/', ]

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(),
            'tags': quote.css('div.tags a.tag::text').getall(),
        }

    next_page = response.css('li.next a::attr(href)').get()
    if next_page is not None:
        next_page = response.urljoin(next_page)
        yield scrapy.Request(next_page, callback=self.parse)

_

Şimdi, örümceğin çıkardığı verileri kaydetmeniz gerekiyor. Kazınan verileri kaydetmek için şu komutu çalıştırmanız yeterlidir:

scrapy crawl test -O test.json

Zaten mevcut bir dosyaya yeni içerik eklemek istiyorsanız, bunun yerine şu kodu çalıştırabilirsiniz:

scrapy crawl quotes -o quotes.jsonl

Tebrikler! Scrapy ile kazıdığınız verileri ayıklama ve kaydetme işlemini tamamladınız. Scrapy ile web kazımanın başarılı olmasını sağlamak için bir şey daha ekleyebilirsiniz: Scrapy proxy'lerini kullanmak.

Scrapy Proxy'lerini Yapılandırma

Bir Scrapy proxy'si, tüm web isteklerinizi sizin adınıza yönetecektir; böylece veri topladığınız herhangi bir web sitesi, yalnızca proxy sunucusunun IP adresini görebilecektir. IP adresiniz tamamen gizlenecektir. IP adreslerini sürekli değiştirerek ve ev tipi proxy'leri kullanarak, web siteleri, isteklerinizin Scrapy gibi bir web kazıma botu kullanan birinden değil, gerçek kullanıcılardan geldiğini sanacaklardır.

Örnek olarak, bir Geonode proxy kullanacağız. Henüz Geonode proxy bilgilerinizi almadıysanız, “Geonode ile Proxy Sunucusu Bilgilerini Alma” bölümüne geçebilirsiniz.

Scrapy’de proxy kurmak için iki yöntem vardır.

İlk yöntem, HTTPProxyMiddleware adlı Scrapy ara yazılımını kullanmaktır; bu, proxy parametrenizi otomatik olarak varsayılan proxy olarak ayarlar.

Şu komutu çalıştırabilirsiniz:

_def start_requests(self): for url in self.start_urls: return Request(url=url, callback=self.parse, headers={"User-Agent": "My UserAgent"}, meta={"proxy": "premium-residential.geonode.com:9001"}) _

İkinci yöntem ise kendi ara yazılımınızı oluşturmaktır. Bu yöntem daha izole bir yapıya sahiptir ve size daha fazla özgürlük sağlar.

Şu komutu çalıştırabilirsiniz:

_from w3lib.http import basic_auth_header

DOWNLOADER_MIDDLEWARES = { 'myproject.middlewares.CustomProxyMiddleware': 350, 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 400, }

class CustomProxyMiddleware(object): def process_request(self, request, spider): request.meta[“proxy”] = "premium-residential.geonode.com:9001" request.headers[“Proxy-Authorization”] = basic_auth_header(“geonode_xbYe9H2LYr”, “9806022c-cd4a-4776-a053-73fee44344dd”) _

Tebrikler! Scrapy ile herhangi bir web sitesinden veri toplarken bir proxy sunucusu eklediniz. Proxy'nizin çalışıp çalışmadığını doğrulamak isterseniz, https://www.geonode.com/what-is-my-ip adresini ziyaret edebilirsiniz.

Geonode

ile Proxy Sunucu Bilgilerini Alma ### Adım 1. **Geonode

** adresine gidin ve mevcut hesabınızla giriş yapın veya yeni bir hesap oluşturmak için kaydolun.

geonodelogin.png

Adım 2. Ana Sayfada, “Konut Hizmetleri” seçeneğine tıklayın.

GeonodeNew1.png

Adım 3. “Uç Noktalar” seçeneğini görene kadar aşağı kaydırın.

geonodenew1.png

Adım 4. Hangi “Proxy Protokolü”’nü kullanmak istediğinizi seçin: “HTTP Protokolü” veya **“[SOCKS5

Protokolü](https://geonode.com/blog/beginners-guide-to-socks5-proxies)”**.

geonodenew1.png

Adım 5. Hangi "Oturum Türü"'nü kullanmak istediğinizi seçin: “Dönen Proxy” veya Sabit Proxy.

geonodenew3.png

Adım 6. Hangi proxy'yi kullanmak istediğinizi seçin. Örnek olarak, vurgulanan **“premium-residential.geonode

.com:9001”** proxy'sini kullanacağız.

geonodenew4.png

DNS yerine bir IP adresi kullanmak istiyorsanız, “DNS’yi Göster” düğmesini kapatmanız yeterlidir; IP adresleri görünecektir.

geonodenew5.png

7. Adım. Şimdi proxy hesabınızın “Kimlik Doğrulama Bilgileri”ne ihtiyacınız var. Geonode

için bu bilgiler, hesabınızın ana sayfasında yer alır.

GeonodeNew2.png