Python ile Web Scraping Web Sitelerinden Otomatik Veri Çekme
Python ile web scraping yaparak internetteki verileri otomatik çekebilirsiniz. Bu kapsamlı rehberde BeautifulSoup, Requests ve Selenium ile veri toplama tekniklerini öğrenin.
Python ile Web Scraping: Web Sitelerinden Otomatik Veri Çekme
İnternet üzerinde her gün milyarlarca veri üretiliyor. Bu verilerin büyük çoğunluğu web sitelerinde yer alıyor ve çoğu zaman manuel olarak bu verilere ulaşmak oldukça zahmetli olabiliyor. Python ile web scraping sayesinde, bu verileri otomatik olarak çekip analiz etmek mümkün hale geliyor.
Web Scraping Nedir?
Web scraping (veya web kazıma), internet sitelerinden belirli verileri otomatik olarak çekme işlemidir. Python, bu işi yapmak için oldukça güçlü kütüphaneler sunar: BeautifulSoup, Requests, Selenium gibi araçlar sayesinde HTML yapısını çözümleyip verileri ayrıştırabilirsiniz.
Python ile Web Scraping İçin Gereken Kütüphaneler
- requests: Web sitesine istek gönderip sayfa kaynağını almak için kullanılır.
- BeautifulSoup: HTML verisini parse etmek ve içerikleri ayrıştırmak için kullanılır.
- Selenium: JavaScript ile oluşturulan dinamik siteler için kullanılır.
1. Requests + BeautifulSoup ile Temel Web Scraping
Başlangıç olarak statik bir web sayfasından başlıkları çekme örneğiyle başlayalım.
import requests
from bs4 import BeautifulSoup
url = "https://example.com"
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, "html.parser")
basliklar = soup.find_all("h2")
for baslik in basliklar:
print(baslik.text)
2. HTML Etiketleri ile Veri Seçimi
BeautifulSoup kullanırken istediğiniz HTML etiketine göre veri çekebilirsiniz:
icerik = soup.find("div", class_="icerik")
linkler = soup.find_all("a", href=True)
3. Sayfa Yapısını Anlamak İçin İnceleme
Veri çekeceğiniz sayfanın HTML yapısını tarayıcı sağ tıklayıp "İncele" ile açarak belirli etiket ve sınıfları bulabilirsiniz.
4. Dinamik Sayfalardan Veri Çekmek: Selenium Kullanımı
Eğer sayfa içeriği JavaScript ile sonradan yükleniyorsa, requests yetersiz kalabilir. Bu durumda Selenium devreye girer.
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
basliklar = driver.find_elements(By.TAG_NAME, "h2")
for baslik in basliklar:
print(baslik.text)
driver.quit()
5. Veri Temizleme ve Saklama
Çektiğiniz verileri bir listeye alıp CSV ya da Excel dosyasına kaydedebilirsiniz.
import pandas as pd
veri = {
"Baslik": ["Veri 1", "Veri 2", "Veri 3"]
}
df = pd.DataFrame(veri)
df.to_csv("basliklar.csv", index=False)
Web Scraping Yaparken Dikkat Edilmesi Gerekenler
- Her web sitesinin veri çekilmesine izin verip vermediğini
robots.txtdosyasına bakarak öğrenin. - Aşırı istek göndermek sunucuya zarar verebilir, bu yüzden
time.sleep()ile istekleri aralıklarla yapın. - Legal açıdan bazı sitelerin içeriklerini izinsiz almak yasal sorun doğurabilir.
Gerçek Hayatta Kullanım Örnekleri
- Haber sitelerinden manşetleri çekmek
- E-ticaret sitelerinden fiyat karşılaştırma
- Forumlardan yorum analizi
- Kripto para sitelerinden anlık fiyat verisi çekmek
- LinkedIn benzeri sitelerden açık iş ilanları toplamak
Python ile web scraping, internetteki sınırsız veriyi analiz edilebilir hale getirmek için güçlü bir yöntemdir. Gerek akademik çalışmalarda, gerek iş dünyasında veri toplamak ve değerlendirmek isteyen herkes için oldukça kullanışlıdır. Ancak bu işlemi yaparken sitenin izinlerine dikkat etmek ve etik kuralları gözetmek büyük önem taşır.
Bu yazıdaki bilgilerle artık kendi veri çekme botlarınızı yazabilir, projeleriniz için özgün veri kaynakları oluşturabilirsiniz.