5 Kolay Adımda Veriler Nasıl Kazılır?
Yayınlanan: 2020-02-17İşiniz için bir web sitesindeki verileri ne sıklıkla sıyırmanız gerekiyor ve bu çok fazla acı veriyor gibi görünüyor? Bu blog yazısı size 5 kolay adımda verileri nasıl kazıyacağınızı öğretecek.
Bu gönderi, web sayfalarından veya PDF'lerden veri alması gereken ve sürecin olabildiğince hızlı ve acısız olmasını isteyen yazılım uzmanları için yazılmıştır. Verileri kazımanın birçok yolu vardır, ancak bu makale profesyonel geliştiriciler tarafından kullanılan en popüler yöntemlerden birkaçına odaklanacaktır: XPath, Normal İfadeler, Güzel Çorba (BSA), Scrapy, Python İstek Kitaplığı (PRL) ve Selenium Webdriver. Bu kazıma aletlerinin tümü, her biri için sağlanan talimatlarla kolayca kurulabilir. Bu araçları özetleyen bir tablo, artılarını/eksilerini açıklayan bir tablo ve uygun olduğunda bunlar hakkında daha fazla bilgi için bağlantılar içerir. Tablo, benim de denediğim ve tam olması için dahil ettiğim pek popüler olmayan diğer bazı yöntemleri içeriyor.
Bir web sitesindeki kazıma verileri herhangi bir dilde yapılabilir. Bu yazıda, Python kullanarak nasıl veri kazıyacağınızı göstereceğim çünkü kurulumu çok kolay ve öğrenmesi oldukça kolay, özellikle sözdizimi Java, C ve PHP'ye benzer olduğu için zaten başka bir programlama dili biliyorsanız. Python, tabloda açıklanan verileri kazımak için birden çok kitaplığı destekler. Scraping, hedef pazarınız, rakipleriniz ve/veya müşterileriniz hakkında değerli bilgiler sağladığı için herkesin nasıl kullanılacağını bilmesi gereken bir araçtır.
Web kazıma, farklı veri türlerini çıkarmanıza yardımcı olabilir. Birkaç satır kod yazarak e-ticaret sitelerinden emlak listelerini , otel verilerini ve hatta ürün verilerini fiyatlandırma ile tarayabilirsiniz . Ancak web'i tarayacak ve verileri çıkaracaksanız, birkaç şeye dikkat etmeniz gerekir. Sıyırılan verilerin kullanılabilir bir formatta olduğundan emin olmak önemlidir. Kodunuz birden çok web sitesinden veri alabilir. Çıkarılan veriler temizdir ve algoritma çalıştırırken hatalı sonuçlar vermez. Bununla birlikte, kodunuzu yazmak veya web sitelerinden veri taramak için küçük bir web kazıma projesi oluşturmak istiyorsanız, bunu beş basit adımda yapabilirsiniz.

5 kolay yolla veri nasıl kazınır
1. Veri Sıyırma için bir Programlama Dili veya Aracı Seçin
"Bir adam aletleri kadar iyidir". Bu nedenle, web kazıma araçlarınızı ihtiyaçlarınıza uygun bir şekilde seçmeniz gerekir. Bazı kullanıma hazır yazılımların kullanımı kolay gibi görünse de çok fazla yapılandırma değişikliği yapmanıza izin vermeyebilir. Aynı zamanda, birçok araç, bir veritabanına veya buluta kazıdığınız verileri kaydetmek için bir eklentiye sahip olmayabilir. Günümüzde verilerin kazınması için kullanılan programlama dilleri söz konusu olduğunda, Node.js, Python, Ruby ve daha fazlası var. Ancak bunlar arasında Python , daha kolay öğrenme eğrisi, basit sözdizimi, birden fazla harici kütüphanenin mevcudiyeti ve dilinin açık kaynak olması sayesinde en popüler olanıdır.
Web sayfalarını taramak, web tarama örümcekleri oluşturmak ve belirli zaman aralıklarında kazıma işlerini çalıştırmak için kullanılabilecek BeautifulSoup ve Scrapy gibi birden çok kitaplık vardır . Python, diğer sistemleri kazıma motorunuzla entegre etme konusunda muazzam bir esneklik sağlar. Kazılan verilerinizi yerel makinenize, veritabanlarına, S3 Storage'a kolayca kaydedebilir veya hatta bir Word veya Excel dosyasına dökebilirsiniz.
2. Tek Bir Web Sayfasını Kazıma ve Bileşenleri Analiz Etme
Amazon'daki bin ürün sayfasından ürün bilgilerini toplamaya başlamadan önce , sayfaya erişmeniz ve onu analiz etmek ve bir stratejiye karar vermek için tüm Html sayfasını almanız gerekir. Html sayfalarındaki veriler, etiketlerdeki belirli anahtar/değer çiftlerinde veya etiketlerin içindeki metinde bulunabilir. Her web sayfasından tam olarak hangi etiketten veri çıkarmak istediğinizi belirtmek için BeautifulSoup gibi kitaplıkları kullanabilir ve ardından kodu bir döngüde çalıştırabilirsiniz. Bu şekilde, her bir ürün web sayfası için kodunuz çalışacak ve aynı bilgileri, örneğin fiyat ayrıntılarını çıkaracaktır.
3. Bir Veri Temizleme ve Depolama Stratejisine Karar Verin
Verileri kazımaya başlamadan önce bile, verileri nerede depolayacağınıza karar vermelisiniz. Bunun nedeni, verileri nasıl işlediğiniz, onu nerede saklayacağınıza bağlı olacaktır. Birden fazla seçenek mevcuttur. Kazıdığınız verilerin yapılandırılmamış olarak yapılandırılıp yapılandırılmayacağına bağlı olarak NoSQL ve SQL veritabanları arasında seçim yapabilirsiniz. Yapılandırılmamış veriler için, verileri bir dizi öznitelikten oluşan satırlarda saklayabileceğiniz için SQL veritabanlarını seçebilirsiniz. Belirlenmiş özniteliklerin olmadığı yapılandırılmamış veriler için NoSQL veritabanlarına gidebilirsiniz. Verileri hangi veritabanına kaydedeceğiniz konusunda SQL için MySQL veya Postgres'i seçebilirsiniz. Amazon RDS , verilerinizi depolayabileceğiniz ve kullanıma göre ödeme yapabileceğiniz bulutta veritabanları sunar.
NoSQL için, DynamoDb veya ElasticSearch gibi tamamen yönetilen ve son derece hızlı çözümlerinden birini seçebilirsiniz. Farklı veritabanlarının hızlı erişim sağlayan avantajları vardır, bazıları ise TB başına daha ucuz depolama sunar . Seçtiğiniz veritabanı, özel kullanım durumunuza ve dolayısıyla bağlıdır. Birine karar vermeden önce bu konuda biraz araştırma yapılması gerekiyor. Büyük boyutlu kazınmış görüntüleri ve videoları depolamanız gerekirse, AWS S3 veya Glacier kullanabilirsiniz . İkincisi, büyük miktarda veriyi arşivlenmiş bir biçimde depolamak istediğinizde kullanılır. Birincisi daha çok kullanılan çözüm iken, sık sık erişmeniz gerekmez. Bu, çevrimiçi bir sabit disk gibi davranır. Klasörler oluşturabilir ve bunlara dosya kaydedebilirsiniz.

4. Bir Web Sayfaları Listesi Oluşturun veya Veri Sıyırma İçin Bir Normal İfade Yazın
Kodunuzu tek bir web sayfasında test edebilirken, bu projeyi üstlendiğiniz için onlarca, yüzlerce sayfayı taramak istiyor olmalısınız. Genellikle, birkaç web sayfasını tarayacaksanız, bağlantıları bir diziye kaydedebilir ve sayfaları kazırken üzerinde dolaşabilirsiniz. Daha iyi ve daha sık kullanılan bir çözüm, normal ifade kullanmaktır . Basitçe söylemek gerekirse, benzer URL yapılarına sahip web sitelerini tanımlamanın programlı bir yoludur.
Örneğin, Amazon'daki tüm dizüstü bilgisayarların ürün verilerini taramak isteyebilirsiniz. Artık tüm URL'lerin “ www.amazon.com/laptop/ <laptopModelNo>/prodData” ile başladığını görebilirsiniz. Bu biçimi, regex kullanarak çoğaltabilirsiniz, böylece bu tür tüm URL'ler ayıklanır ve web kazıma işleviniz yalnızca bu URL'lerde çalışır . Ve Amazon'un web sitesindeki tüm URL'ler değil. Taranacak çok fazla web sayfanız olması durumunda, herhangi bir anda yaklaşık on web sayfasını taramak için paralel işleme yaklaşımını kullanmanızı öneririz . Web sayfalarını sıyırıp onlardan bağlantılar alıyorsanız ve ardından bu bağlantıların yol açtığı web sayfalarını sıyırıyorsanız, aynı anda bir kök web sayfasından kaynaklanan birden çok alt sayfayı taramak için ağaç benzeri bir yaklaşım kullanabilirsiniz.


5. Kodu Yazın ve Test Edin
Şimdiye kadar tartıştığımız her şey hazırlıktı. Kodu çalıştırmanın ve işi bitirmenin son eylemi için. Web kazıma kodu nadiren tam olarak beklediğiniz gibi çalışır. Bunun nedeni, taramaya çalıştığınız tüm web sayfalarının aynı yapıya sahip olmamasıdır. Örneğin, 100 ürün sayfasında kazıma kodunuzu çalıştırırsınız ve bunlardan yalnızca 80 tanesinin hurdaya ayrıldığını görürsünüz. Bunun nedeni 20 sayfanın stokta kalmamış olması ve web sayfa yapısının farklı olmasıdır. Kodu yazarken bu tür istisnalar hesaba katılmaz. Ancak birkaç yinelemeden sonra gerekli değişiklikleri yapabilirsiniz. Ve ihtiyacınız olan tüm web sayfalarından veri ayıklayın.

Alternatif veri kazıma yöntemleri
Verileri sıyırmak için Excel Filtresi işlevini kullanın
Bu, herhangi bir web sayfasından veri sıyırmanın en kolay yoludur. Excel dışında hiçbir ekstra araç gerektirmez ve hedef web sitenizde veya sisteminizde ayak izi bırakmaz, yani API çağrısı yapılmaz, çerez ayarlanmaz vb. Excel'in yüklü olduğu bir PC/Mac'e erişiminiz varsa, bu çok uzaktır. verileri kazımanın en kolay yolu.
Nasıl çalışır
Excel'de yeni bir sayfa açın ve hedef web sitenizin URL'sini ilk hücreye yazın (örn. http://www.joes-hardware-store.com/). Sonraki hücreye, hedef web sayfanızdan veri çıkaracak bir HTML veya XPath Veri Filtresi formülü girin (bu örnekte kullanılan XPath Veri Filtresi formülü için aşağıdaki tabloya bakın). Birden çok veri sütununu sıyırmak istiyorsanız, her veri sütunu için Adım 1'i tekrarlayın ve bunları yan yana koyun.
Excel'de XPath Veri Filtreleri nasıl edinilir
Excel'de Dosya > Seçenekler > Gelişmiş'e tıklayın ve ardından Görüntü bölümüne gidin. “Şeritte Geliştirici Sekmesini Göster”in yanındaki kutuyu işaretleyin ve ardından Tamam'ı tıklayın. Bu, aşağıdaki ekran görüntüsü 1'de gösterilmektedir:
Excel'de, Geliştirici > Referans'a tıklayın, ardından aşağı kaydırın ve Microsoft XML Belgesi 3.0'ı bulun (aşağıdaki 2. ekran görüntüsünde gösterildiği gibi):
MSXML3 Apress'e tıklayın ve ardından Tamam'a tıklayın (aşağıdaki ekran 3'te gösterildiği gibi):
Artık MSXML3 Referansını yüklediğimize göre, bir deneyelim. Excel'de, hedef web sayfası URL'nizi A1 hücresine ve ardından XPath Veri Filtresi formülünü B1 hücresine girin (örn. aşağıdaki ekran görüntüsü 4 ve 5):
Şimdi, Excel'in CTRL+C kısayolunu kullanarak B1 hücresinin içeriğini kalan tüm hücrelere kopyalayın. Bu, aşağıdaki ekran görüntüsü 6'da gösterilmiştir:
Hedef web sayfası URL'nizi (A1 hücresinde) Excel'in adres çubuğuna kopyalayın. Tarayıcıya yüklemek için Enter'a basın ve verilerinizin sihirli bir şekilde Excel'de göründüğünü görün
Gördüğünüz gibi, bu, verileri kazımanın son derece verimli bir yoludur. Hedef web sitesinde veya sisteminizde herhangi bir ayak izi kalmaz, yani API çağrısı yapılmaz, çerez ayarlanmaz vb.
Verileri sütuna göre ayırmak için Microsoft Word'deki Metinden Sütunlara işlevini kullanın
Bu yöntem ilkinden biraz daha karmaşıktır ancak açıkça tanımlanmış sütunları olan herhangi bir web sitesinden verileri sıyırmak için kullanılabilir. MS Word ve Excel'in yanı sıra aşağıda açıklanan bazı ekstra araçlar gerektirir. İyi haber şu ki, bu yöntem hedef web sitenizde ayak izi bırakıyor, bu nedenle web sitelerini pazarlama amacıyla kazııyorsanız ve tespit edilmekten kaçınmak istiyorsanız, bu yöntem sizin için değildir.
Nasıl çalışır
MS Word'de yeni bir belge oluşturun, örneğin Joe's Hardware Store Ürün Listeleme Kazıma Aracı, ardından hedef web sayfanızı metin kutusuna kopyalayın/yapıştırın (aşağıdaki 1. ekran görüntüsüne bakın). MS Word'de CTRL + G tuşlarına basarak Git işlevini seçin ve tam olarak <<!DOCTYPE HTML [ENTER] yazın. Bu, aşağıdaki ekran görüntüsü 2'de gösterilmektedir:
ALT + F5'e basarak (ekran 3'te gösterildiği gibi) MS Word'de Çalıştır işlevini seçin ve buna benzer bir şey görmelisiniz (aşağıdaki ekran görüntüsü 4'e bakın):
Excel'de, aşağıdaki ekran görüntüsü 5'te gösterildiği gibi Filtreler > Metni Sütunlara Dönüştür'ü seçin:
Sınırlandırılmış'ı seçin, ardından açılır menüden sınırlandırılmış ayırıcınızı seçin (bu örnek için varsayılan olarak seçili olan Virgül kullanıyoruz).
Şimdi, İleri'ye tıklayın ve “virgüllerin” konumunu tanımlayın, yani web verilerinizi sütunlara ayırın (örn., ayırıcım olarak “,” kullanıyorum). Ardından, İleri'ye tıklayın ve Excel'in boş hücreleri nasıl işlemesini istediğinizi tanımlayın, yani onları yok sayın veya boş değerle değiştirin (bu örnek için onu “boş değerleri yoksay” olarak ayarlayacağız). Ardından, Metinden Sütunlara işlevini tamamlamak için Bitir'e tıklayın.
Hedef web sayfanızın açıkça tanımlanmış sütunları yoksa, onu aşağıdaki ekran görüntüsü 6'da gösterildiği gibi "İkame Değerler" olarak ayarlamak isteyebilirsiniz:
Yukarıdaki ekran görüntüsü 7'den de görebileceğiniz gibi, verilerim başarıyla tek tek metin sütunlarına ayrıldı ve artık bunları bilgisayarımda başka bir konuma kolayca kopyalayıp yapıştırabiliyorum.
Bu yöntem, tipik olarak açıkça tanımlanmış sütun başlıklarına sahip PDF dosyalarından veri çıkarmak için özellikle kullanışlıdır. Amacınız Excel makrolarını kullanarak birden çok PDF dosyasından otomatik olarak veri çıkarmaksa size çok zaman kazandırır çünkü artık her PDF dosyası için birden çok belgeyi hızla oluşturmak için aynı MS Word şablonunu tekrar tekrar kullanabilirsiniz. 3. Verileri sıyırmak için MS Excel VBA Düzenleyicisini kullanın.
Bu yöntem için buradan indirebileceğiniz xvba adlı bir araç kullanacağız ve tıpkı bir API (Application Program Interface) gibi çalışıyor. İyi haber şu ki, herhangi bir kod yazmanıza gerek yok. Kötü haber şu ki, hedef web sayfanızın HTML'sini yazmanız gerekiyor, yani bunu MS Word kullanarak yapmanızı öneririm çünkü bu sizi web sayfanızı gerçekten bileşenlerine ayırmaya zorlayacaktır (aşağıdaki ekran görüntüsü 1'e bakın).
Köşeli parantez içindeki sayılar, her veri alanının adı olarak sütun ve satır başlıklarının kullanıldığı bir elektronik tablodaki ayrı hücrelerdir. Değişkenler gibi davranırlar, yani Excel tarafından metin olarak değerlendirilirler ve elektronik tablonuzun nasıl yapılandırıldığına bağlı olarak değişirler (örneğin, verileri filtrelemek için farklı bir sütun seçerseniz).
Google sayfalarında IMPORTXML kullanın
Bir web sayfasından veri sıyırmak için IMPORTXML kullanırken, ilk adım Google E-Tablolar'ı Açmaktır. İkinci adım, Araçlar > Komut Dosyası Düzenleyici'ye gitmektir. Üçüncü adım, hedef web sitenizin HTML kodunu aşağıdaki ekran görüntüsü 7'de gösterildiği gibi metin kutusuna kopyalamak/yapıştırmaktır:
Yukarıdaki ekran görüntüsü 8'den de görebileceğiniz gibi, verilerim başarıyla tek tek metin sütunlarına ayrıldı ve artık bunları bilgisayarımda başka bir konuma kolayca kopyalayıp yapıştırabiliyorum. Bu yöntemi geçmişte bir çevrimiçi pazarlama kampanyası için Facebook ve Twitter verilerini sıyırmak için kullandık. Ayrıca, GOTO komutunu kullanmak istemediğinizde AJAX kullanan web sitelerinden veri sıyırmak için iyi bir yoldur.
Google E-Tablolar'da IMPORTHTML kullanın
Bu yöntem 3 numaralı yönteme benzer, ancak IMPORTXML kullanmak yerine IMPORTHTML kullanacağız. İlk adım, Google E-Tablolar'ı Açmaktır. İkinci adım, Araçlar > Komut Dosyası Düzenleyici'ye gitmektir. Üçüncü adım, hedef web sitenizin HTML kodunu metin kutusuna kopyalamak/yapıştırmaktır.
Chrome uzantılarını kullanma
Data Scraper ve Save To CSV gibi krom uzantılarını kullanarak web verilerini kazıyabilirsiniz. Krom uzantılarının (Data Scraper) ücretsiz ve ücretli bir sürümü olduğundan, hangisinin sizin için daha iyi çalıştığını görmek için her ikisine de sahip olmanızı öneririm.
Çözüm
Birkaç yüz sayfaya kadar kazıma (her çalıştırma arasında birkaç saniye boşluk bıraktığınızdan emin olarak). Bir web sitesini ayda bir kez kazımak, Python'da yazılmış bir Kendin Yap çözümüyle iyi sonuç verir. Ancak, kurumsal düzeyde bir DaaS çözümü arıyorsanız, PromptCloud'daki ekibimiz, bize gereksinimi verdiğiniz uçtan uca bir çözüm sunar ve ardından tak ve çalıştırabileceğiniz verileri size veririz.
Altyapı, proxy yönetimi, verileri kazırken engellenmediğinizden emin olun. Verileri güncellemek için kazıma motorunu düzenli bir sıklıkta çalıştırma. Ayrıca, ilgili web sitesinin kullanıcı arayüzünde yapılan değişiklikleri karşılamak için değişiklikler yaparız. Her şey tam olarak yönetilen çözümümüzde gerçekleştirilir. Bu, kullandıkça öde bulut tabanlı bir hizmettir. Bu, tüm web kazıma gereksinimlerinizi karşılayacaktır. İster bir girişimi yönetiyor olun, ister bir ÇUŞ'u yönetiyor olun veya araştırma çalışmalarınız için verilere ihtiyacınız var. Herkes için veri kazıma çözümlerimiz var.
