Sizin gibi okuyucular MUO'yu desteklemeye yardımcı oluyor. Sitemizdeki bağlantıları kullanarak bir satın alma işlemi gerçekleştirdiğinizde, bir ortaklık komisyonu kazanabiliriz. Devamını oku.

Web'den veri ayıklamak için birkaç Python kitaplığı ve çerçevesi vardır. Herkes, bir sonraki projesi için en uygun olmayabileceğini anlayana kadar belirli bir araçla başlar. Tüm Python araçlarını tek bir projede kullanmanız pek olası olmasa da, web kazıma araç kutunuzda hangilerinin elinizin altında olması gerektiğini bilmelisiniz.

İşte web'den zahmetsizce veri toplamanıza yardımcı olacak en iyi Python kitaplıkları, çerçeveleri ve diğer araçlar.

1. güzel çorba

Yeni başlayanlar için en iyi web kazıma kitaplığıyla listeye başlıyoruz: Güzel Çorba. Temelde, belgeyi bir Python nesnesine dönüştürerek ayrıştırılmış HTML ve XML dosyalarından veri çıkaran bir araçtır.

Güzel Çorba'nın "güzelliği" sadeliğinde yatıyor. Kurulumu kolaydır ve yapabilirsiniz ilk web kazıma projenize başlayın dakikalar içinde. Güzel Çorba, bir HTML belgesinden veri çıkarmak için hiyerarşik bir yaklaşım kullanır. Etiketleri, sınıfları, kimlikleri, adları ve diğer HTML niteliklerini kullanarak öğeleri çıkarabilirsiniz.

instagram viewer

Güzel Çorba'dan daha fazlasını beklemek, işi çok ileri götürmek olurdu. Ara yazılımlar ve proxy döndürme veya çoklu iş parçacığı gibi diğer gelişmiş işlevler için yerleşik destek yoktur. Beautiful Soup ile HTTP istekleri göndermek, indirilen belgeyi ayrıştırmak ve kazınan bilgileri bir çıktı dosyasına aktarmak için kitaplıklara ihtiyacınız vardır.

2. istekler

request, şüphesiz HTTP isteklerini işlemek için en çok kullanılan Python kitaplığıdır. Araç, sloganına sadık kalıyor: HTTP for Humans™. GET ve POST'tan PATCH ve DELETE'e kadar çok sayıda HTTP istek türünü destekler. Sadece bu değil, başlıklar ve yanıtlar da dahil olmak üzere bir isteğin hemen hemen her yönünü kontrol edebilirsiniz.

Kulağa kolay geliyorsa, çok sayıda özelliğiyle ileri düzey kullanıcılara da hitap eden istekler olduğundan emin olabilirsiniz. Bir istekle oynayabilir ve üstbilgilerini özelleştirebilir, POST kullanarak bir sunucuya dosya yükleyebilir ve diğer şeylerin yanı sıra zaman aşımlarını, yönlendirmeleri ve oturumları yönetebilirsiniz.

diğer Python çerçeveleri HTTP isteklerini işlemek için yerleşik desteğe sahip olduğundan, web kazıma söz konusu olduğunda istekler genellikle Güzel Çorba ile ilişkilendirilir. Bir web sayfasının HTML'sini almak için, sunucuya bir GET isteği göndermek için istekleri kullanır, ardından yanıttan metin verilerini çıkarır ve Güzel Çorba'ya iletirsiniz.

3. hurda

Adından da anlaşılacağı gibi Scrapy, büyük ölçekli web kazıyıcılar geliştirmek için bir Python çerçevesidir. Web'den veri çıkarmak için İsviçre çakısı. Scrapy, istek gönderme ve proxy'leri uygulamadan veri çıkarma ve dışa aktarmaya kadar her şeyi işler.

Güzel Çorba'dan farklı olarak, Scrapy'nin gerçek gücü sofistike mekanizmasındadır. Ancak bu karmaşıklığın sizi korkutmasına izin vermeyin. Scrapy, hız, verimlilik ve özellikler açısından bu listedeki en verimli web kazıma çerçevesidir. XPath veya CSS öğelerini kullanarak bir HTML belgesinden veri seçmenize izin veren seçicilerle birlikte gelir.

Ek bir avantaj, Scrapy'nin istekleri gönderme ve verileri çıkarma hızıdır. İstekleri eşzamansız olarak gönderir ve işler ve onu diğer web kazıma araçlarından ayıran şey budur.

Temel özelliklerin yanı sıra, varsayılan Scrapy mekanizmasına ek işlevler ekleyen bir kancalar çerçevesi olan ara katman yazılımları için de destek alırsınız. Scrapy ile JavaScript tabanlı web sitelerini kutudan çıkaramazsınız, ancak aşağıdakiler gibi ara yazılımları kullanabilirsiniz: scrapy-selenium, scrapy-splash ve scrapy-scrapingbee bu işlevselliği projenize uygulamak için.

Son olarak, verileri ayıklamayı bitirdiğinizde, onu çeşitli dosya biçimlerinde dışa aktarabilirsiniz; CSV, JSON ve XML bunlardan birkaçıdır.

Scrapy, Python'un web scraping yapan herkes için en iyi programlama dili olmasının birçok nedeninden biridir. İlk Scrapy projenizi ayarlama özellikle Python sınıfları ve çerçeveleri konusunda deneyiminiz yoksa biraz zaman alabilir. Scrapy'nin iş akışı, birden fazla dosyaya ayrılmıştır ve yeni başlayanlar için bu, istenmeyen karmaşıklık olarak ortaya çıkabilir.

4. Selenyum

Dinamik, JavaScript ile oluşturulmuş içeriği kazımak istiyorsanız, ihtiyacınız olan şey Selenium'dur. Platformlar arası bir web testi çerçevesi olarak Selenium, HTML, CSS ve JavaScript'i oluşturmanıza ve gerekli olanı ayıklamanıza yardımcı olur. Ayrıca oyunun kurallarını tamamen değiştirecek şekilde sabit klavye ve fare eylemleriyle gerçek kullanıcı etkileşimlerini taklit edebilirsiniz.

Selenium, web sürücüsünü kullanarak bir tarayıcı örneği oluşturur ve sayfayı yükler. Selenium tarafından desteklenen bazı popüler tarayıcılar Google Chrome, Mozilla Firefox, Opera, Microsoft Edge, Apple Safari ve Internet Explorer'dır. Sayfadaki HTML öğelerinden içerik bulmak ve çıkarmak için Scrapy seçicilerine benzer CSS ve XPath bulucuları kullanır.

Python konusunda deneyimli değilseniz ancak diğer programlama dillerini biliyorsanız Selenium'u C#, JavaScript, PHP, Perl, Ruby ve Java ile kullanabilirsiniz.

Tek sınırlama, Selenium'un arka planda bir web tarayıcısı başlatması nedeniyle kazıyıcıyı çalıştırmak için gereken kaynakların önemli ölçüde artmasıdır. Scrapy veya Beautiful Soup ile karşılaştırıldığında. Ancak Selenium'un masaya getirdiği ek özellikler göz önüne alındığında, tamamen haklı.

5. urlib

Python urllib kitaplığı, web kazıma cephaneliğinizde olması gereken basit ama gerekli bir araçtır. Python komut dosyalarınızdaki URL'leri işlemenizi ve işlemenizi sağlar.

Urllib'in uygun bir pratik uygulaması, URL değişikliğidir. Birden çok sayfası olan bir web sitesini kopyaladığınızı ve bir sonraki sayfaya geçmek için URL'nin bir bölümünü değiştirmeniz gerektiğini düşünün.

urllib, URL'yi ayrıştırmanıza ve onu birden çok parçaya ayırmanıza yardımcı olabilir; bu parçayı daha sonra yeni bir URL oluşturmak için değiştirebilir ve ayrıştırmayı kaldırabilirsiniz. Dizeleri ayrıştırmak için bir kitaplık kullanmak aşırıya kaçmak gibi görünse de, urllib, web kazıyıcıları eğlence için kodlayan ve veri yapılarının ince ayrıntılarına girmek istemeyen kişiler için bir cankurtarandır.

Ayrıca, bir web sitesinin, Google tarayıcısı ve diğer kazıyıcılar için erişim kurallarını içeren bir metin dosyası olan robots.txt dosyasını incelemek isterseniz, urllib size bu konuda da yardımcı olabilir. Bir web sitesinin robots.txt dosyasını izlemeniz ve yalnızca izin verilen sayfaları kopyalamanız önerilir.

6. JSON, CSV ve XML Kitaplıkları

Güzel Çorba veya Selenium, verileri dışa aktarmak için yerleşik özelliklere sahip olmadığından, bir Python kitaplığına ihtiyacınız olacaktır. verileri bir JSON'a aktarın, CSV veya XML dosyası. Şans eseri, bunu başarmak için yapabileceğiniz çok sayıda kitaplık vardır ve en temel olanlar, sırasıyla JSON, CSV ve XML dosyaları için json, csv ve xml önerilir.

Bu tür kitaplıklar, bir dosya oluşturmanıza, ona veri eklemenize ve son olarak dosyayı yerel depolama alanınıza veya uzak sunucunuza aktarmanıza olanak tanır.

7. mekanik çorba

Mekanik çorba mı? Bu ucuz bir Güzel Çorba kopyası mı? Hayır. mekanize Python isteklerini ve Beautiful Soup'u temel alan MechanicalSoup, insan davranışını otomatikleştirmenize ve bir web sayfasından veri ayıklamanıza yardımcı olur. Güzel Çorba ve Selenyum arasında orta düşünebilirsiniz. Tek yakalama? JavaScript'i işlemez.

İsimler benzer olsa da, MechanicalSoup'un sözdizimi ve iş akışı son derece farklıdır. MechanicalSoup kullanarak bir tarayıcı oturumu oluşturursunuz ve sayfa indirildiğinde, Beautiful Soup'un aşağıdaki gibi yöntemlerini kullanırsınız: bulmak() Ve hepsini bul() HTML belgesinden veri ayıklamak için.

MechanicalSoup'un bir başka etkileyici özelliği de formları bir komut dosyası kullanarak doldurmanıza izin vermesidir. Bu, kazımak istediğiniz sayfaya ulaşmak için bir alana (örneğin bir arama çubuğu) bir şey girmeniz gerektiğinde özellikle yararlıdır. MechanicalSoup'un istek işlemesi, yönlendirmeleri otomatik olarak işleyebildiği ve bir sayfadaki bağlantıları takip edebildiği için muhteşemdir ve sizi bunu yapmak için bir bölümü manuel olarak kodlama zahmetinden kurtarır.

Beautiful Soup'a dayandığından, bu iki kitaplığın dezavantajlarında önemli bir örtüşme var. Örneğin, veri çıkışını, proxy döndürmeyi ve JavaScript oluşturmayı işlemek için yerleşik bir yöntem yoktur. MechanicalSoup'un çözdüğü tek Güzel Çorba sorunu, Python istek kitaplığı için bir paketleyici kodlayarak çözülen istekleri işleme desteğidir.

Python'da Web Scraping Artık Daha Kolay

Python, web'i kazımak için güçlü bir programlama dilidir, şüphesiz, ancak kullanılan araçlar sorunun yalnızca bir parçasıdır. İnsanların bir kazıyıcıyı kodlarken karşılaştıkları en belirgin sorun, HTML belge hiyerarşisini öğrenmektir.

Gelişmiş web kazıyıcılar geliştirmek istiyorsanız, bir web sayfasının yapısını anlamak ve bir öğenin nasıl hızla bulunacağını bilmek şarttır.