Python ile JavaScript ile Web Scraping Nasıl Yapılır?

Giriş: Web Scraping Nedir?

Web scraping, bir web sitesinden veri çıkartma işlemini ifade eder. Genellikle, kullanıcıların manuel olarak erişemeyeceği büyük veri kümesine erişim sağlamanın bir yolu olarak kullanılır. Özellikle Python gibi güçlü bir programlama dili kullanarak web scraping işlemi, veri bilimi, araştırma ve otomasyon gibi alanlarda önemli bir yer tutar. Web scraping ile, belirli bilgileri bir siteden alarak analiz edebilir veya başka projelerde kullanmak için saklayabilirsiniz.

Daha da ilginç olan şey, modern web uygulamalarının çoğunun JavaScript ile dinamik olarak oluşturulmuş içeriğe sahip olmasıdır. Bunun anlamı, standart HTML sayfasında görünmeyen verileri elde etmek için JavaScript’i çalıştırmak gerekeceğidir. Bu yazıda, Python ile JavaScript ile oluşturulmuş bir web sitesinden nasıl veri çekebileceğinizi adım adım inceleyeceğiz.

Python’un sağladığı çeşitli kütüphaneler ile birlikte bu süreci oldukça kolaylaştırabilirsiniz. Amaç, JavaScript ile dinamik olarak güncellenen verilere nasıl ulaşacağınızı göstermek; aynı zamanda farklı teknolojileri bir arada nasıl kullanabileceğinizi anlamanızı sağlamaktır.

Python ile Web Scraping için Gerekli Araçlar

Web scraping işlemi için kullanabileceğiniz Python kütüphanelerinden bazıları şunlardır:

  • Requests: HTTP istekleri göndermek için kullanılır. HTML veya JSON verilerini almak için idealdir.
  • BeautifulSoup: HTML ve XML belge yapısını kolayca anlaşılır hale getirir ve veri çekmeyi kolaylaştırır.
  • Selenium: Web tarayıcılarını otomatikleştirmek için kullanılır. JavaScript içeriği yüklemek için idealdir.
  • Pandas: Veriyi işlemek ve analiz etmek için güçlü bir kütüphanedir.

Bunların yanı sıra, Python’un standart kütüphanelerini kullanarak bu işlemleri daha da kolaylaştırabilirsiniz. Özellikle Selenium, JavaScript tabanlı sayfalardan veri çekmek için en çok tercih edilen kütüphanedir çünkü bir tarayıcıyı simüle ederek JavaScript’in çalışmasını sağlar.

Örneğin, bazı web siteleri veri yüklemesi yapmak için AJAX kullanıyor olabilir. AJAX, JavaScript kullanarak veri alıp göndermeyi sağlar ve bu tür veriler, basit bir HTTP isteği ile çekilemez. İşte bu noktada Selenium devreye girer. Selenium ile birlikte bir tarayıcıyı otomatikleştirerek, JavaScript’in çalışmasını bekleyebilir ve istediğiniz veriyi alabilirsiniz.

Selenium ile JavaScript Verisi Çekmek

Şimdi, Selenium ile bir web sitesinden JavaScript ile oluşturulmuş bir veriyi nasıl çekebileceğinize dair adım adım bir rehber oluşturacağız. İlk önce gerekli kütüphaneleri yüklemeniz gerekecek.

pip install selenium

Daha sonra, Selenium’un çalışabilmesi için gerekli olan bir web sürücüsüne de ihtiyacınız olacak. Örneğin, Chrome tarayıcısı için ChromeDriver kullanabilirsiniz. ChromeDriver’ı indirdikten sonra, aşağıdaki gibi bir Python betiği yazarak tarayıcıyı açabilir ve istediğiniz sayfaya gidebilirsiniz.

from selenium import webdriver

# Tarayıcıyı başlat
driver = webdriver.Chrome('/path/to/chromedriver')

# İlgili web sayfasına git
driver.get('https://example.com')

Yukarıdaki kod parçacığı, Selenium ile bir Chrome tarayıcısını açıp belirtilen URL’ye gitmektedir. Sayfa yüklendikten sonra, JavaScript ile yüklenen içerikleri almak için uygun yöntemleri uygulamak gerekecektir. Eğer sayfada belirli bir elementin JavaScript ile yüklendiğini biliyorsanız, bu elementin yüklenmesini beklemelisiniz. Bunun için WebDriverWait sınıfını kullanabilirsiniz.

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# Belirtilen elementi bekle
try:
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, 'targetElementId'))
    )
finally:
    driver.quit()

Yukarıdaki snippet, belirli bir ID’ye sahip olan elementi yüklenmesini bekler. Eğer bu element belirli bir süre içinde yüklenmezse, geçersiz bir işlem olacaktır. Tarayıcıyı simüle ederek istediğiniz veriyi elde ettikten sonra, bu veriyi alabilir ve işleyebilirsiniz.

Veri Çekme ve İşleme

JavaScript ile oluşturulmuş bir içeriği aldıktan sonra, bu içerikle ne yapmak istediğinize karar vermeye başlayabilirsiniz. Örneğin, elde ettiğiniz verileri düzenlemek, bir CSV dosyası olarak kaydetmek veya bir veritabanına eklemek isteyebilirsiniz.

Alınan veriler üzerinde işlem yapmadan önce bir HTML elementinin içeriğine nasıl erişeceğinizi gösterelim. Örnek olarak, bir div içerisindeki metin içeriğini almak için aşağıdaki kodu kullanabilirsiniz:

element_text = element.text
print(element_text)

Yukarıdaki kod, belirli bir elementin teks içeriğini alır ve yazdırır. Elde ettiğiniz verilere istediğiniz gibi eriştikten sonra, Pandas kütüphanesini kullanarak verileri tablo formatında saklayabilir ve işlemler gerçekleştirebilirsiniz.

import pandas as pd

# Verileri bir DataFrame'e yükleyin
data = {'Column1': ['value1', 'value2'], 'Column2': ['value3', 'value4']}
df = pd.DataFrame(data)

# DataFrame'i CSV olarak kaydet
df.to_csv('output.csv', index=False)

Pandas ile veri manipülasyonu ve saklama işlemleri oldukça kolaydır. Yukarıdaki örnekte, bir sözlük ile verileri alıp düz bir tabloya dönüştürdük ve ardından CSV dosyası olarak kaydettik.

Yasal Durum ve Etik Kurallar

Web scraping işlemi yaparken önemli bir konu da yasal durum ve etik kurallardır. Her ne kadar bir web sitesinden veri çekmek teknik olarak mümkün olsa da, bazı siteler bunun için izin talep edebilir. Robot.txt dosyası, web sitelerinin web scraping’e karşı kurallarını belirler. Bu dosyada belirtilen kurallara uygun hareket etmek önemlidir.

Ayrıca, veri çektiğiniz sitelerin yükünü artırmamak için çok fazla istek göndermekten kaçının. Bir web sitesine sürekli ve yüksek miktarda istek göndermek, site üzerinde baskı oluşturabilir ve bu da kullanıcının IP adresinin engellenmesine yol açabilir.

Sonuç olarak, herhangi bir web scraping işlemi yapmadan önce, ilgili sitenin kullanım şartlarını dikkate almanız ve etik kurallara uygun bir yaklaşım sergilemeniz gerekmektedir. Bu sayede hem verilerinizi elde edebilir hem de web siteleriyle sağlıklı bir ilişki sürdürebilirsiniz.

Sonuç: Pyton ile JavaScript ile Web Scraping Yöntemleri

Bu yazıda, Python ile JavaScript ile oluşturulmuş web sayfalarından nasıl veri çekebileceğinizi ele aldık. Selenium ile tarayıcıyı otomatikleştirerek dinamik içeriklere erişim sağlamak oldukça etkilidir. Burada öğrendiğiniz yöntemleri, farklı projelerde ve farklı veriler üzerinde uygulama fırsatına sahip olacaksınız.

Unutmayın, her zaman yasalara uygun bir şekilde davranmalısınız. Yasal olmayan veya etik dışı bir şekilde veri çekmek, ciddi sonuçlar doğurabilir. Bu nedenle, daima web scraping uygulamalarınızı düzgün bir çerçevede tutmaya özen gösterin.

Python ve JavaScript ile ilgili daha fazla proje ve içerik geliştirmek için bu yazıyı bir başlangıç noktası olarak kullanabilirsiniz. Yeni projeler denemeye ve öğrendiklerinizi uygulamaya devam edin. Böylece hem becerilerinizi geliştirebilir hem de Python ekosistemine katkıda bulunabilirsiniz.

Scroll to Top