Python ile Web Scraping'e Başlangıç Rehberi


 

İnternet, devasa bir bilgi okyanusudur. Peki, bu okyanustan istediğimiz verileri otomatik olarak nasıl çekebiliriz? Bu sorunun cevabı Web Scraping'de yatıyor. Bu rehberde, Python'ın güçlü kütüphanelerini kullanarak web scraping dünyasına ilk adımınızı nasıl atacağınızı öğreneceksiniz.

Web Scraping Nedir?

Web scraping, web sitelerinden yapılandırılmış verileri otomatik olarak toplama işlemidir. Manuel olarak kopyala-yapıştır yapmak yerine, bir yazılım aracılığıyla binlerce web sayfasındaki bilgiyi saniyeler içinde çekebilirsiniz. Fiyat karşılaştırma siteleri, haber takip platformları ve pazar araştırması araçları gibi birçok uygulama web scraping teknolojisini kullanır.

Neden Python?

Python, basit ve okunabilir sözdizimi sayesinde web scraping için en popüler dillerden biridir. Ayrıca bu işi kolaylaştıran birçok harika kütüphaneye sahiptir. Bu rehberde kullanacağımız ana kütüphaneler şunlardır:

  • requests: Web sayfalarını indirmemizi sağlayan basit bir kütüphanedir.
  • Beautiful Soup: İndirdiğimiz HTML içeriğini parçalamamıza (parse etmemize) ve istediğimiz verileri kolayca bulmamıza yardımcı olur.

Adım 1: Gerekli Kütüphaneleri Yükleme

Öncelikle, terminal veya komut istemcisini açarak gerekli kütüphaneleri yükleyelim:

pip install requests beautifulsoup4

Bu komut, requests ve Beautiful Soup 4'ü (kısaca bs4) sisteminize kuracaktır.

Adım 2: Bir Web Sayfası Çekme

İlk olarak, requests kütüphanesini kullanarak bir web sayfasının HTML içeriğini alalım. Örnek olarak, bir e-ticaret sitesindeki ürün listesini çekmeye çalıştığımızı varsayalım.

import requests

url = "http://www.kodumunsitesi.com/" # Örnek bir URL
response = requests.get(url)

# Sayfa içeriğinin başarılı bir şekilde alınıp alınmadığını kontrol etme
if response.status_code == 200:
    html_content = response.text
    print("Sayfa başarıyla çekildi.")
else:
    print(f"Hata oluştu. Status kodu: {response.status_code}")

Adım 3: HTML'i Analiz Etme ve Veri Çekme

Sayfanın HTML içeriğini aldıktan sonra, sıra Beautiful Soup ile bu içeriği parçalamaya gelir. Beautiful Soup, HTML etiketleri arasında gezinmemize ve belirli etiketlere ait verileri kolayca çekmemize olanak tanır.

from bs4 import BeautifulSoup

# response.text yerine html_content değişkenini kullanıyoruz
soup = BeautifulSoup(html_content, 'html.parser')

# Örneğin, tüm başlıkları (<h1>, <h2> vb.) bulmak için:
all_titles = soup.find_all(['h1', 'h2', 'h3'])
for title in all_titles:
    print(title.text.strip())

# Belirli bir CSS sınıfına sahip tüm 'div' etiketlerini bulmak için:
blog_posts = soup.find_all('div', class_='blog-post')
for post in blog_posts:
    post_title = post.find('h2').text.strip()
    post_link = post.find('a')['href']
    print(f"Makale Başlığı: {post_title}, Bağlantı: {post_link}")

Adım 4: Verileri Kaydetme

Çektiğiniz verileri kullanışlı bir hale getirmek için bir listeye ekleyebilir ve daha sonra bir CSV dosyasına veya bir veritabanına kaydedebilirsiniz.

import csv

data = []
for post in blog_posts:
    post_title = post.find('h2').text.strip()
    post_link = post.find('a')['href']
    data.append({'title': post_title, 'link': post_link})

# Verileri CSV dosyasına kaydetme
with open('blog_posts.csv', 'w', newline='', encoding='utf-8') as file:
    writer = csv.DictWriter(file, fieldnames=['title', 'link'])
    writer.writeheader()
    writer.writerows(data)

print("Veriler 'blog_posts.csv' dosyasına kaydedildi.")

Önemli Not: Etik Kurallara Uyun!

Web scraping yaparken her zaman sitenin robots.txt dosyasını kontrol edin. Bu dosya, hangi sayfaları tarayıp tarayamayacağınız hakkında bilgi verir. Ayrıca, sunucuya aşırı yüklenmemek için istekleriniz arasında kısa gecikmeler (time.sleep()) eklemek iyi bir uygulamadır.

Sonuç

Artık Python'ın requests ve Beautiful Soup kütüphanelerini kullanarak temel seviyede web scraping yapabilir ve internetten veri çekebilirsiniz. Bu beceri, veri analizi, pazar araştırması ve otomasyon gibi birçok alanda size yeni kapılar açacaktır. Bu konuda daha derinlemesine bilgi edinmek için blogumuzdaki diğer makaleleri takip edebilirsiniz!


Yorum Gönder

Daha yeni Daha eski