Web kazıma, web sitelerinden bilgi çıkarmak için önemli bir tekniktir. Python ve BeautifulSoup ile verileri nasıl kazıyacağınızı öğrenmek istiyorsanız bu kılavuz, süreç boyunca size adım adım yol gösterecektir. Bu makalenin sonunda, birden fazla sayfayı nasıl kazıyacağınızı, dinamik içeriği nasıl yöneteceğinizi ve IP adresinizin açığa çıkmasını önlemek için proxy sunucularını nasıl kullanacağınızı öğreneceksiniz. Haydi hemen dalalım!
İçindekiler
1. Web Scraping'e Giriş
Web kazıma, otomatik komut dosyaları kullanarak web sitelerinden veri çıkarmayı içerir. Bu teknik, veri analizi, fiyat izleme ve içerik toplama gibi çeşitli amaçlar için yaygın olarak kullanılmaktadır. Python, BeautifulSoup ve İstekler gibi güçlü kütüphaneleriyle web kazımayı basit ve verimli hale getirir.
2. Ortamınızı Kurmak
Kazımaya başlamadan önce geliştirme ortamımızı kurmamız gerekiyor. Bu, gerekli kütüphanelerin kurulmasını içerir. Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:
pip install requests beautifulsoup4 pandas
Bu kütüphaneler önemlidir:
- İstekler: Web sayfalarının içeriğini getirmek için.
- GüzelÇorba: HTML belgelerinden verileri ayrıştırmak ve çıkarmak için.
- Pandalar: Verileri depolamak ve işlemek için.
3. BeautifulSoup ile Bir Web Sitesini Kazımak
Kütüphaneleri kurduktan sonra kazıma betiğinizi yazmaya başlayabilirsiniz. Kitapları listeleyen bir web sitesini kazıma örneğini ele alalım.
Kütüphaneleri İçe Aktarma
import requests
from bs4 import BeautifulSoup
import pandas as pd
Web Sayfasını Getirmek
url = "http://books.toscrape.com/"
response = requests.get(url)
html_content = response.text
HTML'yi ayrıştırma
soup = BeautifulSoup(html_content, 'html.parser')
4. Birden Fazla Sayfayı İşleme
Birden fazla sayfayı kazımak için sayfalar arasında dolaşmanız ve her birinden veri almanız gerekir. Bunu nasıl yapabileceğiniz aşağıda açıklanmıştır:
Sayfalar Arasında Döngü
base_url = "http://books.toscrape.com/catalogue/page-{}.html"
data = []
for page_num in range(1, 51): # Assuming there are 50 pages
response = requests.get(base_url.format(page_num))
soup = BeautifulSoup(response.text, 'html.parser')
# Extract book data here and append to data list
books = soup.find_all('article', class_='product_pod')
for book in books:
title = book.h3.a['title']
price = book.find('p', class_='price_color').text
stock = book.find('p', class_='instock availability').text.strip()
data.append({
"Title": title,
"Price": price,
"Stock": stock
})
5. IP Yasaklarından Kaçınmak için Proxy Kullanmak
Web siteleri, kazımayı önlemek için genellikle IP adreslerini izler. Proxy sunucusu kullanmak, IP adresinizi maskeleyerek bu sorunu önlemenize yardımcı olabilir.
Proxy Kurulumu
proxies = {
"http": "http://your_proxy_server:port",
"https": "http://your_proxy_server:port",
}
response = requests.get(url, proxies=proxies)
Proxy kullandığınızda tüm trafiğiniz başka bir sunucu üzerinden yönlendirilir ve hedef web sitesinin IP adresinizi algılaması engellenir.
6. Verileri CSV ve Excel Formatlarında Saklamak
Verileri kazıdıktan sonra daha fazla analiz için saklamak isteyeceksiniz. Verileri CSV veya Excel formatında kaydetmek için Pandaları kullanabilirsiniz.
Verileri CSV'ye Kaydetme
df = pd.DataFrame(data)
df.to_csv('books.csv', index=False)
Verileri Excel'e Kaydetmek
df.to_excel('books.xlsx', index=False)
Alınmış Verilerin Örnek Tablosu
Başlık | Fiyat | Stoklamak |
---|---|---|
Büyük Tasarım | £13.76 | Stokta var |
Çavdar Tarlasındaki Çocuklar | £5.95 | Stokta var |
Cesur Yeni Dünya | £39.74 | Stokta var |
7. Karar
Python ve BeautifulSoup ile web kazıma, web sitelerinden veri çıkarmak için güçlü bir tekniktir. Bu kılavuzu takip ederek birden fazla sayfayı tarayabilmeli, dinamik içeriği yönetebilmeli ve IP yasaklarından kaçınmak için proxy'leri kullanabilmelisiniz. Verileri kazımadan önce daima web sitesinin hizmet şartlarını kontrol etmeyi ve verileri sorumlu bir şekilde kullanmayı unutmayın.