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.pyBir 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 itemSpider'ı Ç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.txtAra 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 itemOturum 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
- requests ve httpx ile HTTP İstekleri
- BeautifulSoup ile HTML Ayrıştırma
- Scrapy Örümceği Oluşturma
- JavaScript ve Tarama Karşıtı Önlemleri Ele Alma