Python web kazıma ile başladığınızda, seçenekleriniz sonunda üç araca indirgenir: Güzel Çorba, Scrapy ve Selenium.
Python ile web kazımayı öğrenmek istiyor ancak bir sonraki projeniz için Güzel Çorba, Selenium veya Scrapy kullanıp kullanmayacağınız konusunda kafanız mı karıştı? Tüm bu Python kitaplıkları ve çerçeveleri kendi başlarına güçlü olsalar da, tüm web kazıma ihtiyaçlarını karşılamazlar ve bu nedenle, belirli bir iş için hangi aracı kullanmanız gerektiğini bilmek önemlidir.
Güzel Çorba, Scrapy ve Selenium arasındaki farklara bir göz atalım, böylece bir sonraki Python web kazıma projenize başlamadan önce akıllıca bir karar verebilirsiniz.
1. Kullanım Kolaylığı
Yeni başlayan biriyseniz, ilk gereksiniminiz öğrenmesi ve kullanması kolay bir kitaplık olacaktır. Güzel Çorba size web’i kazımak için ihtiyaç duyduğunuz tüm temel araçları sunar ve Python ile minimum deneyime sahip olan ancak web kazıma ile işe koyulmak isteyen kişiler için özellikle yararlıdır.
Tek uyarı, sadeliği nedeniyle Güzel Çorba, Scrapy veya Selenium ile karşılaştırıldığında güçlü değildir. Geliştirme deneyimine sahip programcılar hem Scrapy hem de Selenium’da kolayca ustalaşabilirler, ancak yeni başlayanlar için, Beautiful Soup yerine bu çerçevelerle gitmeyi seçerlerse ilk projenin inşa edilmesi çok zaman alabilir.
Örnekte başlık etiketi içeriğini kazımak için . com’da Beautiful Soup’u kullanıyorsanız, aşağıdaki kodu kullanırsınız:
url = “https://example.com/”
res = requests.get(url).text
soup = BeautifulSoup(res, ‘html.parser’)
title = soup.find(“title”).text
print(title)
Selenyum kullanarak benzer sonuçlar elde etmek için şunu yazarsınız:
url = “https://example.com”
driver = webdriver.Chrome(“path/to/chromedriver”)
driver.get(url)
title = driver.find_element(By.TAG_NAME, “title”).get_attribute(‘text’)
print(title)
Bir Scrapy projesinin dosya yapısı, karmaşıklığını artıran birden çok dosyadan oluşur. Aşağıdaki kod, başlığı örnekten sıyırır . iletişim :
import scrapy
class TitleSpider(scrapy.Spider):
name = ‘title’
start_urls = [‘https://example.com’]
def parse(self, response):
yield {
‘name’: response.css(‘title’),
}
Resmi bir API sunan bir hizmetten veri çıkarmak istiyorsanız, bir web kazıyıcı geliştirmek yerine API’yi kullanmak akıllıca bir karar olabilir .
2. Kazıma Hızı ve Paralelleştirme
Üçü arasında, iş hıza geldiğinde açık ara kazanan Scrapy. Bunun nedeni, varsayılan olarak paralelleştirmeyi desteklemesidir. Scrapy kullanarak, aynı anda birden fazla HTTP isteği gönderebilirsiniz ve komut dosyası, ilk istek grubu için HTML kodunu indirdiğinde, başka bir toplu iş göndermeye hazırdır.
Güzel Çorba ile, eş zamanlı HTTP istekleri göndermek için iş parçacığı kitaplığını kullanabilirsiniz, ancak bu uygun değildir ve bunu yapmak için çoklu iş parçacığı kullanmayı öğrenmeniz gerekir. Selenium’da, birden çok tarayıcı örneği başlatmadan paralelleştirme elde etmek imkansızdır.
Bu üç web kazıma aracını hız açısından sıralarsanız, Scrapy en hızlısı, ardından Güzel Çorba ve Selenium geliyor.
3. Bellek Kullanımı
Selenyum, uygulamalarını web kazıma alanında bulan bir tarayıcı otomasyon API’sidir . Bir web sitesini kazımak için Selenyum kullandığınızda, arka planda çalışan kafasız bir tarayıcı örneği ortaya çıkar. Bu, Selenium’u Beautiful Soup ve Scrapy ile karşılaştırıldığında yoğun kaynak kullanan bir araç haline getirir.
İkincisi tamamen komut satırında çalıştığından, daha az sistem kaynağı kullanır ve Selenium’dan daha iyi performans sunar.
4. Bağımlılık Gereksinimleri
Güzel Çorba, HTML ve XML dosyalarından veri çıkarmanıza yardımcı olan bir ayrıştırma araçları koleksiyonudur. Başka hiçbir şey olmadan gönderilir. HTTP istekleri yapmak için istekler veya urllib gibi kitaplıkları , HTML/XML’yi ayrıştırmak için yerleşik ayrıştırıcıları ve proxy’leri veya veritabanı desteğini uygulamak için ek kitaplıkları kullanmanız gerekir.
Scrapy ise tüm meseleyle birlikte gelir. İstek göndermek, indirilen kodu ayrıştırmak, çıkarılan veriler üzerinde işlemler gerçekleştirmek ve kazınmış bilgileri depolamak için araçlar alırsınız. Uzantıları ve ara yazılımı kullanarak Scrapy’ye başka işlevler ekleyebilirsiniz, ancak bu daha sonra gelirdi.
Selenium ile otomatikleştirmek istediğiniz tarayıcı için bir web sürücüsü indirirsiniz. Veri depolama ve proxy desteği gibi diğer özellikleri uygulamak için üçüncü taraf modüllere ihtiyacınız olacaktır.
5. Dokümantasyon Kalitesi
Genel olarak, proje belgelerinin her biri iyi yapılandırılmıştır ve her yöntemi örnekler kullanarak açıklar. Ancak bir proje dokümantasyonunun etkinliği büyük ölçüde okuyucuya da bağlıdır.
Güzel Çorba’nın dokümantasyonu, web kazımaya yeni başlayanlar için çok daha iyidir. Şüphesiz Selenium ve Scrapy’nin ayrıntılı belgeleri vardır, ancak teknik jargon birçok yeni gelen kişiyi hazırlıksız yakalayabilir.
Programlama kavramları ve terminolojileri konusunda deneyimliyseniz, üç belgeden herhangi birini baştan sona okumak çocuk oyuncağı olacaktır.
6. Uzantılar ve Ara Yazılım Desteği
Scrapy, en genişletilebilir web kazıma Python çerçevesidir, nokta. Ara katman yazılımını, uzantıları, proxy’leri ve daha fazlasını destekler ve büyük ölçekli projeler için bir tarayıcı geliştirmenize yardımcı olur.
Temel olarak çerçevenin varsayılan mekanizmasına özel işlevsellik ekleyen kancalar olan Scrapy’de ara yazılımlar uygulayarak kusursuz ve verimli tarayıcılar yazabilirsiniz. Örneğin, HttpErrorMiddleware HTTP hatalarıyla ilgilenir, böylece örümcekler istekleri işlerken bunlarla uğraşmak zorunda kalmaz.
Ara yazılım ve uzantılar Scrapy’ye özeldir ancak ek Python kitaplıkları kullanarak Beautiful Soup ve Selenium ile benzer sonuçlar elde edebilirsiniz.
7. JavaScript Oluşturma
Selenium’un diğer web kazıma kitaplıklarını geride bıraktığı bir kullanım durumu vardır ve bu, JavaScript etkin web sitelerini kazımadır. Scrapy ara katman yazılımlarını kullanarak JavaScript öğelerini kazıyabilseniz de, Selenium iş akışı en kolay ve kullanışlı olanıdır.
Bir web sitesini yüklemek için bir tarayıcı kullanırsınız, tıklamalar ve düğmelere basarak onunla etkileşim kurarsınız ve ekrana kazımanız gereken içeriği aldığınızda, Selenium’un CSS ve XPath seçicilerini kullanarak ayıklayın.
Güzel Çorba, XPath veya CSS seçicilerini kullanarak HTML öğelerini seçebilir. Yine de, bir web sayfasında JavaScript ile oluşturulmuş öğeleri kazımak için işlevsellik sunmuyor.
Web Scraping Python ile Kolaylaştı
İnternet ham verilerle dolu. Web kazıma, bu verilerin iyi bir şekilde kullanılabilecek anlamlı bilgilere dönüştürülmesine yardımcı olur. Bir web sitesini JavaScript ile kazımak istiyorsanız veya verileri çıkarmadan önce ekrandaki bazı öğeleri tetiklemeniz gerekiyorsa, Selenyum büyük olasılıkla en güvenli seçeneğinizdir.
Scrapy, ister küçük bir paletli ister güncellenmiş veriler için interneti tekrar tekrar tarayan büyük ölçekli bir kazıyıcı yazmak isteyin, tüm ihtiyaçlarınız için tam teşekküllü bir web kazıma çerçevesidir.
Acemi iseniz veya hızlı bir şekilde bir kazıyıcı geliştirmeniz gerekiyorsa Güzel Çorba’yı kullanabilirsiniz. Hangi çerçeveyi veya kitaplığı seçerseniz seçin, Python ile web kazımayı öğrenmeye başlamak kolaydır.