Selenyum ile Web Kazıma: Eksiksiz kılavuz

Selenyum ile Web Kazıma: Eksiksiz kılavuz

Kaynak Düğüm: 2538197

Bir web sayfasından veri ayıklamak mı istiyorsunuz?

Nanonets'e gidin web sitesi kazıyıcı, URL'yi ekleyin ve "Kazı"ya tıklayın ve web sayfası metnini anında bir dosya olarak indirin. Şimdi ücretsiz deneyin.

Nanonets'in web sitesi kazıyıcı


Selenyum Web Kazıma Nedir?

Web kazıma, web sitelerinden veri çıkarma işlemidir. Veri toplama ve analizinde devrim yaratan güçlü bir tekniktir. Geniş çevrimiçi verilerle web kazıma, işletmeler ve bireyler için önemli bir araç haline geldi.

Selenium, web tarama işlevlerini otomatikleştirmek için kullanılan açık kaynaklı bir web geliştirme aracıdır. 2004 yılında geliştirildi ve çoğunlukla web sitelerini ve uygulamaları çeşitli tarayıcılarda otomatik olarak test etmek için kullanıldı, ancak artık web kazıma için popüler bir araç haline geldi. Selenium, Python, Java ve C# dahil olmak üzere birden fazla programlama diliyle kullanılabilir. Gezinme, tıklama, yazma ve kaydırma dahil olmak üzere web sayfası etkileşimi için güçlü API'ler sağlar.

Selenyum web kazıma, web sitelerinden veri çıkarmak için Selenyum tarayıcı otomasyon aracını Python ile kullanmayı ifade eder. Selenium, geliştiricilerin bir web tarayıcısını programlı olarak kontrol etmelerine olanak tanır; bu, web siteleriyle sanki insan kullanıcılarmış gibi etkileşime girebilecekleri anlamına gelir.


Web kazıma için neden Selenyum ve Python kullanılmalı?

Python, web kazıma için popüler bir programlama dilidir çünkü web sitelerinden veri çıkarmayı kolaylaştıran birçok kitaplık ve çerçeveye sahiptir.

Web kazıma için Python ve Selenium'un kullanılması, diğer web kazıma tekniklerine göre çeşitli avantajlar sunar:

  • Dinamik web siteleri: Dinamik web sayfaları, JavaScript veya diğer kodlama dilleri kullanılarak oluşturulur. Bu sayfalar genellikle sayfa tamamen yüklendiğinde veya kullanıcı bunlarla etkileşime girdiğinde görünür öğeler içerir. Selenyum bu öğelerle etkileşime girebilir ve bu da onu dinamik web sayfalarından veri ayıklamak için güçlü bir araç haline getirir.
  • Kullanıcı etkileşimleri: Selenium, tıklamalar, form gönderimleri ve kaydırma gibi kullanıcı etkileşimlerini simüle edebilir. Bu, giriş formları gibi kullanıcı girişi gerektiren web sitelerini kazımanıza olanak tanır.
  • Hata ayıklama: Selenyum, kazıma işleminde adım adım ilerlemenize ve kazıyıcının her adımda ne yaptığını görmenize olanak tanıyan hata ayıklama modunda çalıştırılabilir. Bu, işler ters gittiğinde sorun giderme için kullanışlıdır.

Selenyum ile web kazıma için önkoşullar:

Sisteminizde Python 3 kuruludur.

Selenium kütüphanesi kuruldu. Aşağıdaki komutla pip kullanarak kurabilirsiniz:

pip install Selenium

WebDriver yüklü.

WebDriver, Selenium'un tarayıcıyı kontrol etmek için kullandığı ayrı bir yürütülebilir dosyadır. En popüler tarayıcılar için WebDriver'ı indirmek üzere bulduğum bağlantılar:

Alternatif olarak, ki bu en kolay yoldur, WebDriver'ı web sürücüsü yöneticisi gibi bir paket yöneticisi kullanarak da yükleyebilirsiniz. Bu, sizin için uygun Web Sürücüsünü otomatik olarak indirip yükleyecektir. Web sürücüsü yöneticisini yüklemek için aşağıdaki komutu kullanabilirsiniz:

pip install webdriver-manager

Web sayfasından metnin tamamını saniyeler içinde çıkarın!

Nanonets'e gidin web sitesi kazıyıcı, URL'yi ekleyin ve "Kazı"ya tıklayın ve web sayfası metnini anında bir dosya olarak indirin. Şimdi ücretsiz deneyin.

Nanonets'in web sitesi kazıyıcı


Selenyum web kazıma için adım adım kılavuz

1. Adım: Yükleme ve İçe Aktarma

Başlamadan önce Selenium'u ve uygun sürücüyü kurduğumuzdan emin olduk. Bu örnekte Edge sürücüsünü kullanacağız.

from selenium import webdriver
from Selenium.webdriver.common.keys import Keys
from Selenium.webdriver.common.by import By

Adım 2: WebDriver'ı Kurun ve Erişin

Aşağıdaki kodu çalıştırarak Edge sürücüsünün yeni bir örneğini oluşturabiliriz:

driver = webdriver.Edge()

Adım 3: Web Sitesine Python Üzerinden Erişin

Daha sonra arama motorunun web sitesine erişmemiz gerekiyor. Bu durumda Bing'i kullanacağız.

driver.get("https://www.bing.com")

Adım 4: Kazıdığınız Belirli Bilgileri Bulun

Belirli bir isme ait arama sonuçlarının sayısını çıkarmak istiyoruz. Bunu, arama sonuçlarının sayısını içeren HTML öğesini bularak yapabiliriz.

results = driver.find_elements(By.XPATH, "//*[@id='b_tween']/span")

Adım 5: Birlikte yapın

Artık tüm parçalara sahip olduğumuza göre, belirli bir ismin arama sonuçlarını çıkarmak için bunları birleştirebiliriz.

try:
search_box = driver.find_element(By.NAME, "q")
search_box.clear()
search_box.send_keys("John Doe") # enter your name in the search box
search_box.submit() # submit the search
results = driver.find_elements(By.XPATH, "//*[@id='b_tween']/span")
for result in results:
text = result.text.split()[1] # extract the number of results
print(text)
# save it to a file
with open("results.txt", "w") as f:
f.write(text)
except Exception as e:
print(f"An error occurred: {e}")

6. Adım: Verileri saklayın

Son olarak, çıkarılan verileri bir metin dosyasında saklayabiliriz.

f olarak open(“results.txt”, “w”) ile:

f.write(text)

Selenium Wire ile proxy kullanma

Selenium Wire, HTTP isteklerini ve yanıtlarını incelemenize ve değiştirmenize olanak tanıyarak Selenium'un işlevselliğini artıran bir kitaplıktır. Örneğin Selenium WebDriver'ınız için kolayca bir proxy yapılandırmak için de kullanılabilir.

Selenyum Teli Kurulumu

pip install selenium-wire

Proxy'yi ayarlama

from selenium import webdriver
from Selenium.webdriver.chrome.options import Options
from seleniumwire import webdriver as wiredriver
PROXY_HOST = 'your.proxy.host'
PROXY_PORT = 'your_proxy_port'
chrome_options = Options()
chrome_options.add_argument('--proxy-server=http://{}:{}'.format(PROXY_HOST, PROXY_PORT))
driver = wiredriver.Chrome(options=chrome_options)

İstekleri incelemek ve değiştirmek için Selenium Wire'ı kullanın.

for request in driver.requests:
if request.response:
print(request.url, request.response.status_code, request.response.headers['Content-Type'])

Yukarıdaki kodda, web kazıma oturumu sırasında WebDriver tarafından yapılan tüm isteklerin üzerinden geçiyoruz. Her istek için bir yanıtın alınıp alınmadığını kontrol eder ve yanıtın URL'sini, durum kodunu ve içerik türünü yazdırırız.

Bir web sayfasındaki tüm başlıkları çıkarmak için Selenyum'u kullanma

Bir web sayfasının tüm başlıklarını silmek için Selenyum'u kullanan örnek bir Python kodu:

from selenium import webdriver
# Initialize the webdriver
driver = webdriver.Chrome()
# Navigate to the webpage
driver.get("https://www.example.com")
# Find all the title elements on the page
title_elements = driver.find_elements_by_tag_name("title")
# Extract the text from each title element
titles = [title.text for title in title_elements]
# Print the list of titles
print(titles)
# Close the webdriver
driver.quit()

Bu örnekte, önce Selenium'dan web sürücüsü modülünü içe aktarıyoruz, ardından yeni bir Chrome web sürücüsü örneğini başlatıyoruz. Kazımak istediğimiz web sayfasına gidiyoruz ve ardından sayfadaki tüm başlık öğelerini bulmak için find_elements_by_tag_name yöntemini kullanıyoruz.

Daha sonra, her başlık öğesinden metni çıkarmak ve sonuçta ortaya çıkan başlık listesini, başlıklar adı verilen bir değişkende saklamak için bir liste kavrama kullanırız. Son olarak başlık listesini yazdırıyoruz ve web sürücüsü örneğini kapatıyoruz.

Bu kodun çalışması için Python ortamınızda Selenium ve Chrome web sürücüsü paketlerinin kurulu olması gerektiğini unutmayın. Bunları pip kullanarak şu şekilde kurabilirsiniz:

pip install selenium chromedriver-binary

Ayrıca sürücüdeki URL'yi güncellediğinizden emin olun. Kazımak istediğiniz web sayfasını işaret edecek bir yöntem edinin.

Sonuç

Sonuç olarak, Selenium ile web kazıma, web sitelerinden veri çıkarmak için güçlü bir araçtır. Veri toplama sürecini otomatikleştirmenize olanak tanır ve zamandan ve emekten önemli ölçüde tasarruf etmenizi sağlar. Selenium'u kullanarak web siteleriyle tıpkı bir insan kullanıcı gibi etkileşime girebilir ve ihtiyacınız olan verileri daha verimli bir şekilde elde edebilirsiniz.

Alternatif olarak Nanonets'inki gibi kodsuz araçları kullanabilirsiniz. web sitesi kazıyıcı aracı HTML'den tüm metin öğelerini kolayca çıkarmak için. Tamamen kullanmak ücretsizdir.


Tek bir tıklamayla herhangi bir web sayfasından metin ayıklayın. Nanonets'e gidin web sitesi kazıyıcı, URL'yi ekleyin ve "Kazı"ya tıklayın ve web sayfası metnini anında bir dosya olarak indirin. Şimdi ücretsiz deneyin.

Nanonets'in web sitesi kazıyıcı


SSS:

Selenyum BeautifulSoup'tan daha mı iyi?

Selenium ve BeautifulSoup, web kazımada farklı amaçlara hizmet eden araçlardır. Selenium öncelikle web tarayıcılarını otomatikleştirmek için kullanılsa da BeautifulSoup, HTML ve XML belgelerini ayrıştırmaya yönelik bir Python kitaplığıdır.

Dinamik web sayfalarını kazımak söz konusu olduğunda Selenium BeautifulSoup'tan daha iyidir. Dinamik web sayfaları, JavaScript veya diğer kodlama dilleri kullanılarak oluşturulur. Bu sayfalar genellikle sayfa tamamen yüklenene veya kullanıcı bunlarla etkileşime girene kadar görünmeyen öğeler içerir. Selenyum bu öğelerle etkileşime girebilir ve bu da onu dinamik web sayfalarından veri ayıklamak için güçlü bir araç haline getirir.

Öte yandan BeautifulSoup, HTML ve XML belgelerini ayrıştırmada Selenium'dan daha iyidir. BeautifulSoup, HTML ve XML belgelerini ayrıştırmak ve ihtiyacınız olan verileri çıkarmak için basit ve sezgisel bir arayüz sağlar. Web tarayıcısı gerektirmeyen hafif bir kütüphanedir, bu da bazı durumlarda Selenium'dan daha hızlı ve daha verimli olmasını sağlar.

Özetle Selenium'un BeautifulSoup'tan daha iyi olup olmadığı göreve bağlıdır. Dinamik web sayfalarından veri kazımanız gerekiyorsa Selenyum daha iyi bir seçimdir. Ancak HTML ve XML belgelerini ayrıştırmanız gerekiyorsa BeautifulSoup daha iyi bir seçimdir.

Selenyum mu yoksa Scrapy mi kullanmalıyım?

Selenyum öncelikle web tarayıcılarını otomatikleştirmek için kullanılır ve dinamik web sayfalarından veri kazımak için en uygunudur. Sayfa tamamen yüklenene kadar veya kullanıcı bunlarla etkileşime girene kadar görünmeyen öğeler içeren web sayfalarıyla etkileşime girmeniz gerekiyorsa Selenium daha iyi bir seçimdir. Selenium ayrıca kimlik doğrulama gerektiren web sayfalarıyla veya diğer kullanıcı giriş formlarıyla etkileşime girebilir.

Öte yandan Scrapy, yapılandırılmış web sitelerinden verileri silmek için tasarlanmış Python tabanlı bir web kazıma çerçevesidir. Web sitelerini taramak ve kazımak için birçok özellik sağlayan güçlü ve esnek bir araçtır. Birden fazla sayfadan veya web sitesinden veri kazımak ve bağlantıları takip etmek ve sayfalandırmayla uğraşmak gibi karmaşık kazıma görevlerini yerine getirmek için kullanılabilir. Scrapy ayrıca bellek ve işleme kaynakları açısından Selenium'dan daha verimlidir ve bu da onu büyük ölçekli web kazıma projeleri için daha iyi bir seçim haline getirir.

Selenium'u mu yoksa Scrapy'yi mi kullanmanız gerektiği, web kazıma projenizin özel gereksinimlerine bağlıdır. Dinamik web sayfalarından veri çıkarmanız veya kimlik doğrulaması veya diğer kullanıcı girişi gerektiren web sayfalarıyla etkileşime girmeniz gerekiyorsa Selenium daha iyi bir seçimdir. Ancak yapılandırılmış web sitelerinden veri kazımanız veya karmaşık kazıma görevleri gerçekleştirmeniz gerekiyorsa Scrapy daha iyi bir seçimdir.

Web kazıma için hangi dil en iyisidir?

Python, kullanım kolaylığı, geniş kütüphane yelpazesi ve Scrapy, request, BeautifulSoup ve Selenium gibi güçlü kazıma çerçeveleri nedeniyle web kazıma için en popüler dillerden biridir. Python'un öğrenilmesi ve kullanılması da kolaydır, bu da onu yeni başlayanlar için mükemmel bir seçim haline getirir

Web kazıma için birçok programlama dili kullanılabilir, ancak bazıları bu görev için diğerlerinden daha uygundur. Web kazıma için en iyi dil, görevin karmaşıklığı, hedef web sitesi ve kişisel tercihiniz gibi çeşitli faktörlere bağlıdır.

Web kazıma projenizin özel gereksinimlerine bağlı olarak R, JavaScript ve PHP gibi diğer diller de kullanılabilir.

Selenyum web kazımada neden önemlidir?

Selenyum, çeşitli nedenlerden dolayı web kazımada önemli bir araçtır:

Dinamik Web Sayfalarını Kazımak: Günümüzde birçok web sitesi, verileri görüntülemek için dinamik içerik ve kullanıcı etkileşimlerini kullanıyor. Bu, web sitesindeki birçok içeriğin JavaScript veya AJAX aracılığıyla yüklendiği anlamına gelir. Selenyum, bu dinamik web sitelerini kazımada çok etkilidir çünkü sayfadaki öğelerle etkileşime girebilir ve kaydırma ve tıklama gibi kullanıcı etkileşimlerini simüle edebilir. Bu, büyük ölçüde dinamik içeriğe bağımlı olan web sitelerinden veri almayı kolaylaştırır. Çerezleri ve Oturumları İşleme, Otomatik Test, Tarayıcılar Arası Uyumluluk ve Ölçeklenebilirlik için en uygunudur:

Selenium ve BeautifulSoup'u birlikte kullanabilir misiniz?

Evet birlikte kullanabilirsiniz. Selenium öncelikle web sayfalarıyla etkileşime girer ve tıklama, kaydırma ve form doldurma gibi kullanıcı etkileşimlerini simüle eder. BeautifulSoup ise HTML ve XML belgelerini ayrıştırmak ve bunlardan veri çıkarmak için kullanılan bir Python kütüphanesidir. Selenium ve BeautifulSoup'u birleştirerek, web sayfalarıyla etkileşimde bulunmak ve onlardan veri çıkarmak için güçlü bir web kazıma aracı oluşturabilirsiniz. Selenium dinamik içeriği ve kullanıcı etkileşimlerini yönetebilirken BeautifulSoup HTML'yi ayrıştırabilir ve sayfa kaynağından veri çıkarabilir.

Ancak, her iki aracı birlikte kullanmanın tek bir araçtan daha fazla kaynak tüketebileceğini ve daha yavaş olabileceğini belirtmekte fayda var. Bu nedenle, web kazıma projenizin gereksinimlerini değerlendirmek ve iş için doğru araçları seçmek çok önemlidir.

Zaman Damgası:

Den fazla AI ve Makine Öğrenimi