BeautifulSoup ile Python 2’de Web Scraping Yapmak

Web Scraping Nedir?

Web scraping, web sayfalarındaki verilere erişim sağlamak ve bu verileri programatik olarak çekmek için kullanılan bir tekniktir. Genellikle, büyük veri setleri gerektiren yapay zeka uygulamaları, veri analizi projeleri veya araştırmalar için kullanılır. Web scraping sayesinde; ürün bilgileri, fiyatlar, kullanıcı yorumları gibi verileri kolayca toplayabiliriz.

Python, web scraping için en popüler dillerden biridir. Bunun başlıca sebebi, Python’un sunduğu güçlü kütüphanelerdir. BeautifulSoup, bazı verileri düzenli ve okunabilir bir formatta çekmeyi kolaylaştıran bir kütüphanedir. Özellikle, HTML veya XML belgelerinden veri çıkartmak için kullanılır ve prototip oluşturma aşamalarında geliştiricilere büyük kolaylık sağlar.

Web scraping işlemleri, genellikle HTTP istekleriyle başlar. Bir URL’ye istek yapılır ve yanıt olarak gelen HTML içeriği analiz edilerek istenilen veriler elde edilir. BeautifulSoup, bu süreçte HTML yapısını anlamayı ve belirli alanları seçmeyi kolaylaştırır. Örneğin, bir ürün listesinden yalnızca fiyat ve ürün adı bilgilerini çekmek için bu kütüphaneden faydalanabiliriz.

BeautifulSoup Kütüphanesini Kurmak

BeautifulSoup, Python’da kullanımı son derece basit bir kütüphanedir. Python 2 kullanıcıları için, kütüphaneyi kurmak için pip kullanabilirsiniz. Ancak öncelikle, pip’in yüklü olduğundan emin olun:

python -m ensurepip --default-pip

Pip yüklüyse, BeautifulSoup kurmak için terminal veya komut istemcisine aşağıdaki komutu yazmanız yeterlidir:

pip install beautifulsoup4

Kurulum tamamlandıktan sonra, BeautifulSoup’u kullanmak için onu projenize dahil etmeniz gerekmektedir. Özellikle, web sayfalarından veri çekebilmek için requests kütüphanesi de sıklıkla kullanılır. Eğer requests kütüphanesi yüklü değilse, onu da kurmalısınız:

pip install requests

Şimdi, BeautifulSoup ile web scraping yapmak için gerekli kütüphaneleri projemize ekleyebiliriz:

from bs4 import BeautifulSoup
import requests

Bu iki kütüphane ile temel web scraping işlemlerine başlayabilirsiniz.

Web Scraping Örneği: Basit Bir Uygulama

BeautifulSoup ile basit bir web scraping işlemi gerçekleştirelim. Örnek olarak, bir e-ticaret sitesinin ürün fiyatlarını çekmek istiyoruz. Bunun için öncelikle hedef web sayfasının URL’sini belirlememiz gerekiyor:

url = 'https://example.com/products'

Bu URL üzerinden HTML içeriğini almak için requests kütüphanesini kullanacağız. Şimdi, gerekli HTTP isteğini gönderelim:

response = requests.get(url)
html_content = response.content

Artık hedef sayfanın HTML içeriğine sahibiz. Şimdi BeautifulSoup kullanarak bu içeriği ayrıştıralım ve istediğimiz verileri çekelim:

soup = BeautifulSoup(html_content, 'html.parser')
products = soup.find_all('div', class_='product')
for product in products:
    name = product.find('h2').text
    price = product.find('span', class_='price').text
    print(name, price)

Yukarıdaki kod, belirli bir HTML yapısına sahip bir sayfadan ürün adlarını ve fiyatlarını çekmek için kullanılır. ‘div’ etiketindeki ‘product’ sınıfına sahip tüm öğeleri bulur ve ardından her bir ürün için ad ve fiyat bilgilerini ekrana yazdırır.

HTML Yapısını Anlamak ve Regex Kullanımı

HTML yapısı genellikle karmaşık olabilir, bu nedenle hangi etiketlerin ve sınıfların hangi verilere karşılık geldiğini anlamak önemlidir. Geliştiriciler, genellikle tarayıcıların geliştirici araçlarını kullanarak belirli öğelerin konumlarını keşfederler. Bu araçlar, DOM (Document Object Model) yapısını görselleştirerek hangi etiketlerin ve özelliklerin hangi verileri içerdiğini gösterir.

Ayrıca, bazen verilere ulaşmak için düzenli ifadeler (regex) kullanmak faydalı olabilir. Python’da re kütüphanesiyle birlikte regex kullanarak belirli formatlardaki verileri yakalayabilmek mümkündür. Örneğin, fiyatlar genellikle belirli bir biçimde yazılır (örneğin, 100 TL gibi). Aşağıdaki örnekle, metin içinden fiyatları bulalım:

import re
text = 'Ürün 1 fiyatı: 100 TL, Ürün 2 fiyatı: 150 TL.'
prices = re.findall(r'\d+\s*TL', text)
print(prices)

Bu kod, verilen metin içerisindeki fiyatları çeker. ‘findall’ fonksiyonu ile koşula uyan tüm değerleri bir liste olarak alırız.

Veri Çekmenin Etik Kuralları

Web scraping yapmadan önce dikkate almanız gereken bazı etik kurallar vardır. Öncelikle, hedef web sitesi üzerindeki robots.txt dosyasını kontrol etmelisiniz. Bu dosya, hangi alanların scraping’e açık olduğunu ve hangi alanların kapalı olduğunu belirtir. Her web sitesi bu kurala uymak zorundadır ve yasal sorunlar yaşamamak için bu verilere dikkat etmek gerekir.

Ayrıca, web scraping yaparken sunucuya aşırı yüklenmemek için isteklerinizi sınırlamalısınız. Aşırı istek göndermek sunucu tarafında kesintilere yol açabilir veya IP adresinizin engellenmesine neden olabilir. Bu tür olağanüstü durumlarla karşılaşmamak için, isteklerinizi belirli bir periyotta gönderin.

Son olarak, web scraping ile elde edilen verileri yalnızca kendi projelerinizde kullanın ve başkalarının haklarını ihlal etmemeye özen gösterin. Elde ettiğiniz verileri izinsiz bir şekilde paylaşmak veya satmak, yasal başınızı belaya sokabilir.

Veri Analizi ve Güncelleme Süreçleri

Web scraping sırasında elde edilen verilerin analizi, bu verilerin ne kadar kullanışlı olduğunu belirler. Elde ettiğiniz verileri analiz etmek için Python’da pandas gibi kütüphaneleri kullanabilirsiniz. Örneğin, ürün fiyatlarını ve adlarını bir pandas DataFrame’ine ekleyerek daha sonra bu veriler üzerinde analizler yapabilirsiniz:

import pandas as pd

data = {'Product': [], 'Price': []}
for product in products:
    name = product.find('h2').text
    price = product.find('span', class_='price').text
    data['Product'].append(name)
    data['Price'].append(price)

df = pd.DataFrame(data)
df.to_csv('products.csv', index=False)

Bu kod, çekmiş olduğunuz verileri bir CSV dosyası olarak kaydeder. Daha sonra bu dosyayı analiz etmek için kullanabilirsiniz.

Güncelleme süreçleri de veri scraping’de önemlidir. Elde ettiğiniz verilerin güncel kalmasını sağlamak için belirli aralıklarla web scraping işlemini tekrarlamanız gerekebilir. Bunu, bir zamanlayıcı veya cron job ile otomatik hale getirerek yapabilirsiniz.

Sonuç ve Teşvik

Web scraping, Python ile yapıldığında oldukça güçlü ve esnek bir araçtır. BeautifulSoup, bu süreçte geliştiricilere kolaylık sağlarken, veri çekme işlemlerinde verimliliği artırır. Web üzerinde veri bulmak birçok uygulama için kritik öneme sahiptir ve bu yazıda öğrendiğiniz tekniklerle kendi projeleriniz üzerinde çalışabilirsiniz.

Unutmayın, öğrendiklerinizle denemeler yapmak, deneyim kazanmanın en iyi yoludur. Çekmek istediğiniz veriler üzerinde pratik yaparak yeni beceriler geliştirin. Ayrıca, toplulukla paylaştığınız geliştirdiğiniz projeler aracılığıyla diğer yazılımcılara da ilham verebilirsiniz.

Gelecek yazılarımda daha karmaşık scrape yöntemleri ve diğer Python uygulama kütüphanelerini inceleyeceğiz. Takipte kalın ve kendi Python yolculuğunuzda kendinize güvenin!

Scroll to Top