21 puan yazan GN⁺ 2024-07-11 | 2 yorum | WhatsApp'ta paylaş
  • Crawlee, web scraping ve tarayıcı otomasyonu için bir Python kütüphanesidir
  • Güvenilir crawler'ları hızlıca oluşturmaya yardımcı olur
  • Yapay zeka, LLM, RAG ve GPT için veri çıkarımında kullanılabilir
  • Web sitelerinden HTML, PDF, JPG, PNG gibi dosyaları indirebilir
  • BeautifulSoup, Playwright ve saf HTTP ile çalışır
  • Hem Headful modunu hem de Headless modunu destekler
  • Proxy rotasyonu özelliği sunar

Özellikler

  • HTTP ve Headless tarayıcı crawling'i için birleşik bir arayüz sunar
  • Kullanılabilir sistem kaynaklarına göre otomatik paralel crawling yapar
  • Type hint kullanan Python ile yazılmıştır; IDE otomatik tamamlama deneyimini iyileştirir ve hataları azaltır
  • Hata oluştuğunda veya engellendiğinde otomatik yeniden deneme özelliği
  • Entegre proxy rotasyonu ve oturum yönetimi özellikleri
  • Yapılandırılabilir istek yönlendirme - URL'leri doğrudan uygun handler'a iletir
  • Crawl edilecek URL'ler için kalıcı kuyruk
  • Hem tablo biçimindeki veriler hem de dosyalar için tak-çalıştır depolama
  • Güçlü hata işleme özellikleri

Scrapy'den farkları

  • Crawlee, varsayılan olarak Headless tarayıcı crawling'ini (Playwright) destekler
  • Basit ve zarif arayüz - 10 satırdan az kodla scraper kurulabilir
  • Eksiksiz type hint desteği
  • Standart Asyncio tabanlıdır

GN⁺ görüşü

  • Crawlee, web scraping ve crawling için güçlü bir araç gibi görünüyor. Özellikle Headless tarayıcı tabanlı crawling'i varsayılan olarak desteklemesi büyük bir avantaj.
  • Basit arayüzü ve az kodla crawler oluşturulabilmesi sayesinde üretkenlik yüksek görünüyor. Ayrıca type hint'leri aktif biçimde kullanması, geliştirme deneyimini iyileştiriyor ve hata olasılığını azaltıyor.
  • Veri çıkarmak için crawling gereken projelerde Crawlee ciddi şekilde değerlendirilebilir. Özellikle JavaScript render etmesi gereken web sayfalarını crawl etmek gerekiyorsa PlaywrightCrawler faydalı görünüyor.
  • Ancak çok büyük ölçekli crawling gerekiyorsa veya gerçek zamanlılık önemliyse, dağıtık crawling destekleyen Scrapy ya da başka araçları kullanmak daha iyi olabilir.
  • Ayrıca crawling politikaları ve hukuki konular da yeterince değerlendirilerek kullanılması yerinde olur.

2 yorum

 
yangeok 2024-07-15

Node'u desteklediğini biliyordum ama görünüşe göre Python'u da destekliyormuş. Bakımı gereken bir scraper ise framework'ü ciddi ciddi düşünmek gerekecek gibi haha

 
GN⁺ 2024-07-11
Hacker News görüşleri
  • Mevcut özellikleri belgelendirmek önemli. Web scraping platformu ne kadar harika olursa olsun, yalnızca kullanıcılarının anlayabildiği bir şeyse faydası yok

    • Örneğin, tiered_proxy_urls: list[list[str]] | None = None ifadesinin ne anlama geldiğini anlamak zor
    • Örnekler, .csv, .xlsx tabloları gibi tüm verileri bulup indirmenin nasıl yapılacağını göstermeli
    • Sadece metin çekmek ve URL aramak herkesin yapabileceği bir şey
    • 1000 farklı öğeyi parse edip farklı endpoint'ler üzerinden 3-5 öğe alan örneklere ihtiyaç var
    • Bunun bir framework mü yoksa bir otomasyon aracı mı olduğu net değil
    • Web scraping opt-out protokolünü destekleyip desteklemediğini merak ediyorum (ör. Robots.txt, HTTP ve içerik etiketleri). Özellikle AB'nin DSM direktifinden sonra bu daha önemli hale geldi
  • Apify/Crawlee'ye teşekkürler. Uzun süredir Node.js kullanıcısı olarak bu kütüphane en iyi çalışanıydı

  • Projem için bir stack ararken Crawlee'yi keşfettim. Python kütüphanesi istiyordum ama Crawlee'yi Typescript ile kullanarak projeyi bir haftada tamamladım

    • API, şimdiye kadar kullandığım tüm Python scraping API'lerinden çok daha iyi
    • Playwright ile entegrasyonu, programlama deneyimini çok rahat hale getiriyor
    • Frontend rendering yapan web siteleri ve değiştirilmiş XHR yanıtlarını yakalama işi iyi çalışıyor
    • Apify platformunu kullanarak ölçeklendirmeyi planlıyorum
  • Scrapy'den nasıl farklı olduğunu merak ediyorum

  • Başka kütüphanelerden geçmek için sebep ne, merak ediyorum. Kendi crawler'ımı kurdum ama özellikle benzersiz bir şey bulamadım

  • Modern Python kodu güzel görünüyor

    • Örnek kodda const data = await crawler.get_data() Javascript gibi görünüyor. Alt çizgi eksik gibi
  • Test case'lerden daha fazla kod snippet'ını belge örneği olarak taşımayı öneriyorum. Eline sağlık

  • Scraping araçları her zaman hoş karşılanır. Bunu kişisel bir projede denemeyi planlıyorum. Yapay zeka sayesinde şu anda scraping, altına hücum döneminde kürek satmak gibi