41 puan yazan GN⁺ 2024-02-21 | 5 yorum | WhatsApp'ta paylaş

Python web scraping'in avantajları

  • Basit sözdizimi: hızlı kodlama sağlar
  • Yerleşik kütüphaneler: urllib, lxml vb. scraping için yardımcı olur
  • Olgun scraping kütüphaneleri: Beautiful Soup, Scrapy vb.
  • Çok yönlülük: veri hatları kurmada kullanılabilir
  • Birlikte çalışabilirlik: diğer dillerle entegrasyonda ve performansın önemli olduğu durumlarda iyi çalışır

Python web scraping kütüphaneleri

  • BeautifulSoup: HTML/XML ayrıştırma, esnek gezinme ve arama
  • Scrapy: hızlı ve ölçeklenebilir, middleware ve dağıtık crawling özellikleri
  • Selenium: tarayıcı otomasyonu, JavaScript ağırlıklı siteleri işleme
  • lxml: çok hızlı XML/HTML ayrıştırıcısı
  • pyquery: jQuery tarzı sözdizimiyle HTML öğelerine erişim

Scraping için hazırlıklar

  • Sanal ortam kurulumu önerilir
  • Gerekli kütüphaneler: Requests, BeautifulSoup, OS

Scraping yapılacak web sitesinin seçimi

  • Wikipedia'daki 'Köpek cinsleri listesi' sayfası seçildi
  • İyi yapılandırılmış HTML, çeşitli veri alanları ve görseller içerir

Scraping kodunun yazılması

  • Gerekli kütüphaneleri içe aktarma
  • Tarayıcı gibi görünmek için User-Agent kullanma
  • requests ile HTML sayfasını indirme ve doğrulama
  • BeautifulSoup ile HTML ayrıştırma
  • CSS seçicilerle veri çıkarma
  • Görselleri indirme ve kaydetme

Web scraping'de gerçek zorluklar ve en iyi uygulamalar

  • Dinamik içerik işleme: Selenium veya Scrapy'nin splash entegrasyonunu kullanma
  • Engellenmeyi önleme: istek hızını ayarlama, tarayıcıyı taklit etme, kullanıcı aracısı ve proxy rotasyonu
  • Hız sınırları: crawl gecikmesine saygı gösterme, proxy kullanma, istekleri otomatik ayarlama
  • Karmaşık HTML ayrıştırma: lxml gibi güçlü ayrıştırıcılar kullanma, seçicileri güçlendirme

GN⁺ görüşü

  • En önemli nokta: Python, web scraping için güçlü bir dildir; basit sözdizimi ve zengin kütüphane ekosistemi sayesinde farklı ölçeklerdeki web scraping projeleri için uygundur.
  • Neden ilgi çekici: Web scraping, veri toplama ve analiz için temel bir beceridir ve bu kılavuz, başlangıç seviyesindeki yazılım mühendislerinin gerçek projelerde kullanabileceği pratik bilgiler sunar.
  • Neden faydalı: Web scraping birçok alanda uygulanabilir; bu kılavuz, gerçek zorluklar ve en iyi uygulamalar üzerinden pratikte güçlü scraping becerileri geliştirmeye yardımcı olur.

5 yorum

 
yangeok 2024-02-26

JavaScript render tarafında Playwright gerçekten en iyisi. Dil desteği de oldukça geniş görünüyor.

Scrapy ile birleştirince sinerji yaratabilir gibi duruyor.

 
ikbzbcg15 2024-02-21

Ya dostum, bugünlerde playwright kullanmak lazım.

 
bandoche 2024-02-21

Gerçekte scraping’i iş olarak yapmaya başlayınca, düşünüldüğünden daha zahmetli olan kısmın tarayıcıyla uğraşmak (sık sık hata veren Chrome WebDriver) ve engellemeleri (çeşitli CAPTCHA’lar) aşmak olduğunu gördüm.

 
GN⁺ 2024-02-21
Hacker News görüşleri
  • Web crawling ile scraping’i birbirinden ayırmak önemli. Crawling, URL’leri bulup HTML içeriğini getirme aşaması; scraping ise HTML’den yapılandırılmış veri çıkarma aşamasıdır. Bu iki adımı ayırırsanız daha sonra scraper’ı değiştirip mevcut verilere hızla yeniden uygulayabilirsiniz.
  • Python web scraping aracı olarak Playwright öneriliyor. Oldukça güçlü ve iyi tasarlanmış bir tarayıcı otomasyon aracı; komut satırından doğrudan web sayfalarını scrape etmeye yarayan shot-scraper CLI aracını kullanıyorlar.
  • SaaS şirketlerinin blog yazılarında kendi ürünlerini tanıtması pazarlamanın bir parçası, ancak yeni başlayanlara problemi ilk kez anlatırken çözüm olarak kendi ürünlerini sunmaları her zaman ilginç oluyor.
  • Web sitesi scraping’i için faydalı bilgiler içerebilen <domain>/robots.txt dosyasını kontrol etmek ve HTML etiketlerini parse etmek yerine yapılandırılmış metadata üzerinden veri çıkarmak yararlı olabilir. Bunu JSON olarak çıkaran kütüphaneler de var.
  • Python yerine Node.js ile web scraping yapılmasının neden daha popüler olduğu sorgulanıyor. npm’de DOM parse etmek için iyi hazırlanmış paketler var ve JavaScript kullanıldığı için DOM işlevlerini daha doğal biçimde kullanmak mümkün.
  • pandas’ın read_html fonksiyonuyla linkler kolayca alınabilir. Bu sayede web sitelerindeki tablo verileri rahatça çıkarılabilir.
  • Tekrarlayan ve yaratıcı olmayan web scraping işlerinden bıkıldığı, bu yüzden artık tüm süreci otomatikleştirmek için LLM’lerin (Large Language Models) kullanılmaya çalışıldığı belirtiliyor. LLM kullanarak web sitesi değişikliklerine uyum sağlayan scraper kodu üretmek ve ayarlamak verimli oluyor.
  • Python scraping hakkında bu kadar çok “kusursuz rehber” olmasına dair şüphe dile getiriliyor.
  • Modern web scraping kurulumlarında bir tarayıcı ajanına ihtiyaç var; büyük sosyal medya platformlarından ya da New York Times makaleleri gibi kaynaklardan veri çekmek için kendi araçlarınızı geliştirmeniz gerekebilir.
  • Scraping sırasında requests-cache kütüphanesi faydalı oluyor. requests kütüphanesinin yerine geçiyor, ancak tüm yanıtları bir SQLite veritabanında önbelleğe aldığı için sitenin sizi kısıtladığı durumlarda script’i ayarlamayı kolaylaştırıyor.
 
xguru 2024-02-21

Bu yorumda önemli olan şu:

SaaS şirketlerinin blog yazılarında kendi ürünlerini tanıtması pazarlamanın bir parçası, ancak yeni başlayanlara bir sorunu ilk kez tanıtırken kendi ürünlerini çözüm olarak sunmaları her zaman ilginç.

Mesele bu. Bu tür yazıları okurken, sonunda her zaman kendi ürünlerinin tanıtımının yer aldığını akılda tutmak gerekir. Tersinden söylemek gerekirse, yerli şirketlerin de temelde bu yöntemi kullanması gerektiğini düşünüyorum.