Web Scraping'e Giriş: Veriye Adım Atmak
İlk adımda, bir hedef belirlememiz gerekiyor. Web scraping, internetten veri çekme sürecini ifade eder. Web siteleri genellikle HTML formatında içerik sunar ve bu içerik, kullanıcılar tarafından görüntülenmek için tarayıcılar aracılığıyla işlenir. Biz ise bu veriyi alıp bir araya getirebilir, analiz edebilir ve daha sonra kullanabiliriz.
Python, bu işlem için harika bir dil çünkü hem güçlü hem de kullanıcı dostu kütüphaneler sunuyor. Bunlardan biri de *BeautifulSoup*. Bu kütüphane, HTML verisini rahatça çözümlememize olanak tanır. Ama önce, gerekli kütüphaneleri yükleyelim.
pip install requests
pip install beautifulsoup4
Burada, `requests` kütüphanesi ile web sayfasından veri çekerken, `BeautifulSoup` ile bu veriyi işleyeceğiz.
Veriyi Çekmek ve İşlemek: BeautifulSoup ile İlk Adımlar
Gelin, web sayfasındaki veriyi nasıl çekeceğimize bakalım. Diyelim ki bir e-ticaret sitesinden ürün bilgilerini almak istiyoruz. Bu tür veriler genellikle liste formatında sunulur ve her bir ürün bir HTML etiketiyle çevrelenir. İlgili sayfanın HTML yapısını analiz ettikten sonra, gerekli veriyi çekebiliriz.
İlk olarak, istek gönderip sayfanın içeriğini alıyoruz:
import requests
from bs4 import BeautifulSoup
url = 'https://www.example.com/products'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
Yukarıdaki kodda, `requests.get(url)` komutuyla belirtilen sayfanın HTML içeriğini alıyoruz. Ardından, bu içeriği `BeautifulSoup` kullanarak işleriz.
Veri Çekme ve Temizleme
Veriyi çektikten sonra, hedeflediğimiz bilgileri seçmemiz gerekiyor. Örneğin, her bir ürünün adı, fiyatı ve açıklamasını almak isteyebiliriz. HTML yapısına göre, verileri çekmek için etiketleri ve sınıf adlarını kullanacağız.
products = soup.find_all('div', class_='product-item')
for product in products:
name = product.find('h2', class_='product-name').text
price = product.find('span', class_='product-price').text
description = product.find('p', class_='product-description').text
print(name, price, description)
Bu kod, her ürünün ismini, fiyatını ve açıklamasını alıp ekrana yazdıracaktır. Ancak veri çekme işlemi çoğu zaman ham ve düzensiz verilerle sonuçlanır. Bu nedenle, temizleme işlemi yapmanız gerekebilir.
Yapay Zeka Entegrasyonu: Veriyi Anlamlandırmak
İşte burada yapay zekanın gücü devreye giriyor. Çektiğimiz veriyi sadece saklamakla kalmayıp, aynı zamanda anlamlandırabiliriz. Örneğin, metin analizleri yapmak veya fiyat tahminleri oluşturmak gibi yapay zeka destekli analizler yapabiliriz. Bunun için Python’da yaygın olarak kullanılan *scikit-learn* gibi kütüphaneleri kullanarak veri üzerinde çeşitli analizler yapabiliriz.
Örneğin, eğer ürünlerin açıklamalarına göre bir etiketleme yapmak istiyorsak, bir metin sınıflandırma modelini eğitebiliriz. Bu sayede, her ürünün hangi kategoriye ait olduğunu tahmin edebiliriz.
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.naive_bayes import MultinomialNB
from sklearn.model_selection import train_test_split
# Verilerinizi buraya yükleyin
texts = ['product description 1', 'product description 2', 'product description 3']
labels = ['category1', 'category2', 'category1']
vectorizer = CountVectorizer()
X = vectorizer.fit_transform(texts)
y = labels
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
model = MultinomialNB()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
print(predictions)
Yukarıdaki kod, basit bir metin sınıflandırma modelini eğitmek için kullanılabilir. Bu model, ürün açıklamalarına göre doğru kategoriyi tahmin etmeye çalışacaktır.
Veritabanı Oluşturma: Veriyi Saklamak ve Yönetmek
Son olarak, veriyi topladıktan ve analiz ettikten sonra, bu veriyi düzenli bir şekilde saklamak gerekiyor. Python'da SQLite gibi hafif veritabanlarını kullanabiliriz. Veritabanına veri eklemek için, önce bir veritabanı bağlantısı kurar ve ardından veriyi ekleriz.
import sqlite3
# Veritabanı bağlantısını oluşturma
conn = sqlite3.connect('products.db')
cursor = conn.cursor()
# Veritabanı tablosu oluşturma
cursor.execute('''
CREATE TABLE IF NOT EXISTS products (
name TEXT,
price TEXT,
description TEXT
)
''')
# Veri ekleme
cursor.execute('''
INSERT INTO products (name, price, description)
VALUES (?, ?, ?)
''', (name, price, description))
conn.commit()
conn.close()
Veritabanı oluşturduktan sonra, veriyi saklamak oldukça kolay hale gelir. Burada, her ürün için bir satır ekleyerek, veritabanına düzenli bir şekilde veri kaydedebiliriz.
Sonuç: Veri ile Geleceği Şekillendirin
Web scraping, Python ve yapay zeka ile birleştiğinde gerçekten güçlü bir araç haline gelir. Bu yazıda öğrendiğimiz tekniklerle, sadece veri toplamakla kalmaz, aynı zamanda bu veriyi anlamlandırabilir, kategorilere ayırabilir ve veritabanında düzenli bir şekilde saklayabilirsiniz. Artık, veri toplama süreciniz çok daha verimli ve güçlü bir hale geldi.
SEO İpuçları: Arama Motorlarında Üst Sıralarda Yer Alın
SEO açısından, yazınızı daha görünür kılmak için belirli anahtar kelimelere odaklanmak önemlidir. Bu yazının içeriği, "web scraping," "Python," "BeautifulSoup," "yapay zeka," "veri toplama" gibi terimler etrafında şekilleniyor. Bu anahtar kelimeleri içeriğinizde dengeli bir şekilde kullanarak, arama motorlarında daha iyi sıralamalar elde edebilirsiniz.
Ayrıca, içeriğinizi düzenli aralıklarla güncellemek ve doğru başlık etiketleri kullanmak da SEO başarınızı artırabilir. Unutmayın, içerik ne kadar değerliyse, o kadar dikkat çeker!