Selenium ve Python ile web kazima nasil yapilir

Developer running Python Selenium scripts for web scraping with residential proxies

Web sitelerinden veri toplamak, yaygın olarak web kazıma olarak bilinen bu teknik birçok proje için pratiktir. BeautifulSoup gibi kütüphaneler temel HTML ile çalışmak için harikadır, ancak sayfalar içeriği göstermek için yoğun şekilde JavaScript’e dayandığında genellikle zorlanırlar. İşte tam bu noktada Selenium devreye girer.

Bu rehberde, web sitelerini etkili şekilde kazımak için Selenium’u Python ile nasıl kullanacağınızı öğreneceksiniz.

Önce Şunu Bilin — Selenium Nedir?

Selenium, web uygulamalarını test etmek için tasarlanmış bir tarayıcı otomasyon çerçevesidir. Chrome veya Firefox gibi gerçek bir tarayıcıyı kontrol ederek gerçek kullanıcı davranışını simüle eder. Bu sayede diğer araçların baş edemediği JavaScript ile oluşturulan içeriği işleyebilir.

Bu, Selenium’u etkileşimli web sitelerinden, formlardan, sonsuz kaydırmalardan ve daha fazlasından içerik kazımak için harika bir çözüm yapar.

Selenium Nasıl Kurulur?

Başlamak için Selenium’u pip ile kurduğunuzdan emin olun:

pip install selenium

WebDriver Nasıl Kurulur?

Selenium, tarayıcıyla iletişim kurmak için bir WebDriver gerektirir. İşte Chrome kullanan basit bir örnek:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service

service = Service("/path/to/chromedriver")
driver = webdriver.Chrome(service=service)

Tarayıcıyı pencere açmadan çalıştırmak istiyorsanız (sunucularda kullanışlıdır), headless modunu etkinleştirin:

from selenium.webdriver.chrome.options import Options

options = Options()
options.add_argument("--headless=new")
driver = webdriver.Chrome(options=options)

Sayfadaki Öğeler Nasıl Bulunur?

HTML öğelerini bulmak için farklı stratejiler kullanabilirsiniz:

from selenium.webdriver.common.by import By

element = driver.find_element(By.CLASS_NAME, "product-title")

Diğer konumlandırıcı seçenekleri:

  • By.ID
  • By.TAG_NAME
  • By.CSS_SELECTOR
  • By.XPATH

JavaScript’in Yüklenmesini Bekleme

time.sleep() kullanmak yerine Selenium, WebDriverWait ile akıllı bekleme destekler:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.ID, "content"))
)

JavaScript Çalıştırma

Sayfayı kaydırmanız veya yavaş yüklenen öğeleri tetiklemeniz gerekiyorsa JavaScript çalıştırabilirsiniz:

driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")

Ekran Görüntüsü Alma

Mevcut görünümün ekran görüntüsünü şu şekilde alabilirsiniz:

driver.save_screenshot("screenshot.png")

Sayfalandırma İşleme

Birden fazla sayfayı kazımak için bağlantılar arasında döngü kurabilir veya bir “Sonraki” düğmesiyle etkileşim kurabilirsiniz:

next_button = driver.find_element(By.LINK_TEXT, "Next")
next_button.click()

Veri Dışa Aktarma

Kazıdığınız verileri CSV dosyasına kaydetmek için Pandas kütüphanesini kullanabilirsiniz:

import pandas as pd

df = pd.DataFrame(data)
df.to_csv("output.csv", index=False)

Tuşlarla Kaydırma

PAGE_DOWN veya END gibi tuşlara basmayı simüle etmek için:

from selenium.webdriver.common.keys import Keys

body = driver.find_element(By.TAG_NAME, "body")
body.send_keys(Keys.END)

Görüntüleri ve Diğer Kaynakları Engelleme

Kazımayı hızlandırmak ve kaynak kullanımını azaltmak için:

driver.execute_cdp_cmd("Network.setBlockedURLs", {"urls": ["*.jpg", "*.png"]})

Selenium Diğer Araçlarla Nasıl Karşılaştırılır?

AraçJavaScript DesteğiHızİdeal Kullanım Alanı
SeleniumTamOrtaEtkileşimli/dinamik sayfalar
BeautifulSoupYokHızlıStatik HTML kazıma
Scrapyİsteğe bağlı (Selenium aracılığıyla)Çok hızlıBüyük ölçekli kazıma projeleri
PuppeteerTam (yalnızca Node.js)OrtaHeadless Chromium tabanlı kazıma

Selenium Ne Zaman Kullanılmalı?

Selenium’u şu durumlarda tercih edin:

  • Web sitesi büyük ölçüde JavaScript’e dayanıyorsa
  • Kullanıcı etkileşimlerini (tıklama, kaydırma ve giriş) simüle etmeniz gerekiyorsa
  • Küçük veya orta ölçekli bir kazıma görevi üzerinde çalışıyorsanız

Daha büyük veya daha hızlı kazıma işleri için Scrapy gibi araçları veya residential proxy’ler, CAPTCHA ve JavaScript’i sizin için halleden özel API’leri değerlendirin.

Sonuç

Selenium, Python kullanarak dinamik web sitelerini kazımak için mükemmel bir seçenektir. Kurulumdan sonra karmaşık sayfalardan içerik çıkarmanıza olanak tanır. En hızlı araç olmasa da gerçek bir tarayıcıyı otomatikleştirme yeteneği onu son derece esnek kılar.


Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir