yardım etmek mi istiyorsunuz? İşte seçenekleriniz:","Crunchbase","Hakkımızda","Muhteşem destek için herkese teşekkürler!","Hızlı Bağlantılar","Ortaklık programı","ProxyScrape premium deneme","Çevrimiçi Proxy Denetleyicisi","Proxy türleri","Vekil ülkeler","Proxy kullanım durumları","Önemli","Çerez politikası","Sorumluluk Reddi","Gizlilik Politikası","Şartlar ve koşullar","Sosyal Medya","Facebook","LinkedIn","Twitter","Quora","Telgraf","Discord"," © Telif Hakkı 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belçika | KDV BE 0749 716 760"]}
Web kazıma, bir web sitesinden otomatik ve iyi yapılandırılmış bir biçimde veri çıkarma sanatıdır. Excel, CSV ve çok daha fazlası gibi veri kazıma için farklı formatlar olabilir. Web kazımanın bazı pratik kullanım alanları pazar araştırması, fiyat izleme, fiyat istihbaratı, pazar araştırması ve potansiyel müşteri oluşturmadır. Web kazıma, kamuya açık verilerden en iyi şekilde yararlanmak ve daha akıllı kararlar almak için etkili bir tekniktir. Bu nedenle, herkesin web kazımanın en azından temellerini bilmesi ondan faydalanmak için harikadır.
Bu makale, Python'un Beautiful Soup adlı çerçevesi ile oynayarak web kazıma temellerini ele alacaktır. Kodlama ortamımız olarak Google Colab 'ı kullanacağız.
Şimdi web kazıma sürecinin nasıl işlediğini gördük. Kodlamaya başlayalım,
Adım1: Üçüncü Taraf Kütüphanelerin Kurulması
Çoğu durumda, Colab zaten yüklü üçüncü taraf paketleriyle birlikte gelir. Ancak yine de import ifadeleriniz çalışmıyorsa, aşağıdaki komutları kullanarak birkaç paket yükleyerek bu sorunu çözebilirsiniz,
pip yükleme istekleri
pip html5lib yükleyin
pip install bs4
Adım2: Web Sayfasından HTML İçeriğine Erişim
i̇thalat talepleri̇
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL)
print(r.content)
Formun çıktısını görüntüleyecektir,
Bu kod parçasını anlamaya çalışalım,
Adım3: HTML İçeriğinin Ayrıştırılması
i̇thalat talepleri̇
from bs4 import BeautifulSoup
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib') # Bu satır bir hataya neden olursa, 'pip install html5lib ' komutunu çalıştırın veya html5lib'i yükleyin
print(soup.prettify())
Çıktı:
Çok uzun bir çıktı verir; ekran görüntülerinden bazıları aşağıya eklenmiştir.
Beautiful Soup ile ilgili en güzel şeylerden biri, Beautiful Soap'un nesnesinin ve ayrıştırıcı kütüphanesinin aynı anda oluşturulmasına izin veren html5lib, html.parse, lxml vb. gibi HTML ayrıştırma kütüphaneleri üzerine inşa edilmiş olmasıdır.
Yukarıdaki kodda, iki argüman geçirerek Beautiful Soup nesnesini oluşturduk:
r.content: Ham HTML içeriği.
html5lib: Kullanmak istediğimiz HTML ayrıştırıcısını belirtir.
Son olarak, soup.prettify() yazdırılarak ham HTML içeriğinden ayrıştırma ağacının görsel temsili elde edilir.
Adım4: Ayrıştırma ağacında arama ve gezinme
Şimdi sıra HTML içeriğinden bazı yararlı verileri çıkarmaya geldi. Çorba nesneleri, daha sonra programlı olarak çıkarılabilecek iç içe geçmiş yapı biçimindeki verileri içerir. Bizim durumumuzda, bazı alıntılardan oluşan bir web sayfasını kazıyoruz. Bu yüzden bu alıntıları çözen bir program oluşturacağız. Kod aşağıda verilmiştir,
#Python program to scrape website
#and save quotes from website
import requests
from bs4 import BeautifulSoup
import csv
URL = "http://www.values.com/inspirational-quotes"
r = requests.get(URL)
soup = BeautifulSoup(r.content, 'html5lib')
quotes=[] # a list to store quotes
table = soup.find('div', attrs = {'id':'all_quotes'})
for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
quote = {}
quote['theme'] = row.h5.text
quote['url'] = row.a['href']
quote['img'] = row.img['src']
quote['lines'] = row.img['alt'].split(" #")[0]
quote['author'] = row.img['alt'].split(" #")[1]
quotes.append(quote)
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
w = csv.DictWriter(f,['theme','url','img','lines','author'])
w.writeheader()
for quote in quotes:
w.writerow(quote)
Daha ileri gitmeden önce, soup.prettify() yöntemini kullanarak yazdırdığımız web sayfasının HTML içeriğini gözden geçirmeniz ve alıntılara gitmek için bir kalıp bulmaya çalışmanız önerilir.
Şimdi yukarıdaki kodda bunu nasıl yaptığımızı açıklayacağım,
Tırnak işaretleri arasında gezinirsek, tüm tırnak işaretlerinin id'si 'all_quotes' olan bir div konteynerinin içinde olduğunu görürüz. Bu yüzden find() metodunu kullanarak bu div elemanını (kodda tablo olarak adlandırılır) buluruz:
table = soup.find('div', attrs = {'id':'all_quotes'})
Bu işlevdeki ilk bağımsız değişken, aranması gereken HTML etiketidir. İkinci argüman, bu etiketle ilişkili ek nitelikleri belirtmek için sözlük tipi bir öğedir. find() yöntemi ilk eşleşen öğeyi döndürür. Bu kod parçasının ne yaptığını daha iyi hissetmek için table.prettify() denenebilir.
Eğer tablo elemanına odaklanırsak, div konteyneri sınıfı quote olan her bir alıntıyı içerir. Bu yüzden sınıfı quote olan her div konteyneri boyunca döngü yapacağız.
Burada findAll() yöntemi çok kullanışlıdır, argümanlar söz konusu olduğunda find() yöntemine benzer, ancak en büyük fark, eşleşen tüm öğelerin bir listesini döndürmesidir.
Row adında bir değişken kullanarak her bir alıntıyı yineliyoruz.
Daha iyi anlamak için bir HTML satır içeriği örneğini analiz edelim:
Şimdi aşağıdaki kod parçasını düşünün:
for row in table.findAll('div', attrs = {'class':'col-6 col-lg-3 text-center margin-30px-bottom sm-margin-30px-top'}):
quote = {}
quote['theme'] = row.h5.text
quote['url'] = row.a['href']
quote['img'] = row.img['src']
quote['lines'] = row.img['alt'].split(" #")[0]
quote['author'] = row.img['alt'].split(" #")[1]
quotes.append(quote)
filename = 'inspirational_quotes.csv'
with open(filename, 'w', newline='') as f:
w = csv.DictWriter(f,['theme','url','img','lines','author'])
w.writeheader()
for quote in quotes:
w.writerow(quote)
Burada bir alıntı hakkındaki tüm bilgileri kaydetmek için bir sözlük oluşturuyoruz. İç içe geçmiş yapıya erişmek için nokta gösterimi kullanılır. HTML öğesinin içindeki metne erişmek için .text kullanırız:
Ayrıca, etiketin niteliklerini ekleyebilir, kaldırabilir, değiştirebilir ve bunlara erişebiliriz. Bunu, etiketi bir sözlük olarak ele alarak yaptık:
quote['url'] = row.a['href']
Ardından tüm tırnak işaretlerini tırnak işaretleri adlı listeye ekledik.
Son olarak, verilerimizi kaydetmek için kullanılacak bir CSV dosyası oluşturacağız.
filename = 'inspirational_quotes.csv'
Dosyamıza inspirational_qoutes.csv adını verdik ve tüm alıntıları gelecekte de kullanmak üzere kaydettik. İşte inspirational_quotes.csv dosyamızın nasıl göründüğü,
Yukarıdaki çıktıda sadece üç satır gösterdik, ancak gerçekte 33 satır var. Yani bu, sadece basit bir deneme yaparak web sayfasından önemli miktarda veri çıkardığımız anlamına gelir.
Not: Bazı durumlarda, web kazıma yasadışı olarak kabul edilir ve bu da IP adresinizin web sitesi tarafından kalıcı olarak engellenmesine neden olabilir. Bu nedenle dikkatli olmanız ve yalnızca buna izin veren web sitelerini ve web sayfalarını kazımanız gerekir.
Web kazımanın büyük ölçüde kullanılabileceği gerçek dünya senaryolarından bazıları şunlardır,
Kurşun Üretimi
Çoğu işletme için kritik satış faaliyetlerinden biri potansiyel müşteri oluşturmaktır. Bir Hubspot raporuna göre, trafik ve potansiyel müşteri oluşturmak, gelen pazarlamacıların %61'inin bir numaralı önceliğidir. Web kazıma, pazarlamacıların internet üzerindeki yapılandırılmış müşteri adayı listelerine erişmesini sağlayarak bu konuda bir rol oynayabilir.
Pazar Araştırması
Doğru pazar araştırması yapmak, yürüyen her işin en önemli unsurudur ve bu nedenle son derece doğru bilgiler gerektirir. Pazar analizi, farklı boyut ve şekillerde olabilen yüksek hacimli, yüksek kaliteli ve son derece anlayışlı web kazıma ile beslenmektedir. Bu veriler, iş zekası gerçekleştirmek için çok faydalı bir araç olabilir. Pazar araştırmasının ana odak noktası aşağıdaki iş yönleridir:
Liste Oluştur
Web kazıma, örneğin gayrimenkuller ve e-ticaret mağazaları gibi işletme türlerine göre listeler oluşturmak için çok kullanışlı ve verimli bir teknik olabilir. Bir web kazıma aracı, işletmenin mağazasındaki rakip ürünlerin binlerce listesine göz atmasına ve fiyatlandırma, ürün ayrıntıları, varyantlar ve incelemeler gibi gerekli tüm bilgileri toplamasına yardımcı olabilir. Bu işlem yalnızca birkaç saat içinde yapılabilir ve bu da kişinin kendi listelerini oluşturmasına ve böylece müşteri taleplerine daha fazla odaklanmasına yardımcı olabilir.
Bilgileri Karşılaştırın
Web kazıma, çeşitli işletmelerin bilgi toplayıp karşılaştırmasına ve bu verileri anlamlı bir şekilde sunmasına yardımcı olur. Çeşitli diğer web sitelerinden incelemeleri, özellikleri ve tüm temel ayrıntıları çıkaran fiyat karşılaştırma web sitelerini düşünelim. Bu ayrıntılar derlenebilir ve kolay erişim için uyarlanabilir. Böylece alıcı belirli bir ürünü aradığında farklı perakendecilerden bir liste oluşturulabilir. Dolayısıyla web kazıma, tüketici talebine göre çeşitli ürün analizleri göstererek tüketici için karar verme sürecini çok daha kolay hale getirecektir.
Toplu Bilgi
Web kazıma, bilgilerin bir araya getirilmesine ve kullanıcıya düzenli bir biçimde gösterilmesine yardımcı olabilir. Haber toplayıcıları örneğini ele alalım. Web kazıma aşağıdaki şekillerde kullanılacaktır,
Bu makalede, pratik bir kullanım örneğini göz önünde bulundurarak web kazımanın nasıl çalıştığına dair derinlemesine bir analiz yaptık. Ayrıca Python'da basit bir web kazıyıcı oluşturmak için çok basit bir alıştırma yaptık. Artık istediğiniz herhangi bir web sitesini kazıyabilirsiniz. Ayrıca, web kazımanın önemli bir rol oynayabileceği bazı gerçek dünya senaryolarını da gördük. Umarız makaleyi beğenmişsinizdir ve her şey açık, ilginç ve anlaşılır olmuştur.
Web kazıma projeleriniz için harika proxy hizmetleri arıyorsanız, şu adrese bakmayı unutmayın ProxyScrape konut ve prim vekilleri.