Python Kullanarak Web Kazıyıcı Nasıl Oluşturulur
Web kazıma, web sitelerinden veri çıkarmak için güçlü bir tekniktir. Sağlam kütüphaneleri ve basit sözdizimiyle Python, web kazıma için en popüler dillerden biridir. Bu makalede, Python kullanarak bir web kazıyıcı oluşturma konusunda size rehberlik edeceğiz. Gerekli kütüphaneleri, web sayfalarından veri almanın ve verileri ihtiyaçlarınıza göre ayrıştırmanın nasıl yapılacağını ele alacağız.
Ortamın Kurulması
Başlamadan önce, sisteminizde Python'un yüklü olduğundan emin olun. Web kazıma için aşağıdaki kütüphaneleri kullanacağız:
- istekleri: HTTP istekleri yapmak ve web sayfası içeriğini almak için.
- BeautifulSoup: HTML ve XML belgelerini ayrıştırmak için.
Bu kütüphaneleri pip kullanarak kurabilirsiniz:
pip install requests
pip install beautifulsoup4
Adım 1: HTTP İstekleri Oluşturma
Web kazıma işleminin ilk adımı web sayfasının içeriğini almaktır. requests
kütüphanesi bir web sunucusuna HTTP istekleri göndermemize ve HTML içeriğini almamıza olanak tanır.
Örnek: Bir Web Sayfasını Getirme
import requests
url = "https://example.com"
response = requests.get(url)
if response.status_code == 200:
print("Page fetched successfully!")
print(response.text) # Print the HTML content
else:
print("Failed to fetch the page.")
Bu kod belirtilen URL'ye bir GET isteği gönderir ve istek başarılı olursa HTML içeriğini yazdırır.
Adım 2: HTML İçeriğini Ayrıştırma
HTML içeriğine sahip olduğumuzda, istediğimiz verileri çıkarmak için onu ayrıştırmamız gerekir. BeautifulSoup
kütüphanesi HTML yapısı içinde gezinmeyi ve aramayı kolaylaştırır.
Örnek: HTML'yi BeautifulSoup ile ayrıştırma
from bs4 import BeautifulSoup
html_content = response.text
soup = BeautifulSoup(html_content, "html.parser")
# Extract the title of the page
title = soup.title.text
print("Page Title:", title)
# Find all the links on the page
links = soup.find_all('a')
for link in links:
print(link.get('href'))
Bu kod HTML içeriğini ayrıştırmak ve sayfa başlığını ve sayfada bulunan tüm köprü metinlerini çıkarmak için BeautifulSoup'u kullanır.
Adım 3: Belirli Verileri Çıkarma
Bir web sayfasından belirli verileri çıkarmak için, HTML yapısını incelemeniz ve istenen bilgileri içeren etiketleri, sınıfları veya kimlikleri tanımlamanız gerekir. BeautifulSoup, bu amaç için find()
, find_all()
ve select()
gibi yöntemler sağlar.
Örnek: Bir Tablodan Veri Çıkarma
# Find the table by its class name
table = soup.find('table', {'class': 'data-table'})
# Extract table rows
rows = table.find_all('tr')
for row in rows:
columns = row.find_all('td')
data = [col.text.strip() for col in columns]
print(data)
Bu örnek, bir tablonun sınıf adına göre nasıl bulunacağını ve her satırdan verinin nasıl çıkarılacağını gösterir.
Adım 4: Dinamik İçeriğin İşlenmesi
Bazı web siteleri JavaScript kullanarak dinamik olarak içerik yükler. Bu tür web sitelerini taramak için, bir web tarayıcısını otomatikleştirmenize ve JavaScript ile işlenen içerikle etkileşime girmenize olanak tanıyan selenium
veya pyppeteer
gibi kütüphaneleri kullanabilirsiniz.
Örnek: Dinamik İçerik için Selenium Kullanımı
from selenium import webdriver
# Set up the WebDriver
driver = webdriver.Chrome()
# Open the web page
driver.get("https://example.com")
# Extract dynamically loaded content
content = driver.find_element_by_id("dynamic-content").text
print(content)
# Close the browser
driver.quit()
Bu kod, başlangıç HTML kaynağında bulunmayan dinamik içeriği işlemek için Selenium'un nasıl kullanılacağını göstermektedir.
Çözüm
Python'da bir web kazıyıcı oluşturmak requests
ve BeautifulSoup
gibi kütüphanelerin yardımıyla basittir. Bu kılavuzda özetlenen adımları izleyerek web sayfalarından kolayca veri alabilir ve ayrıştırabilirsiniz. Etik kazıma uygulamalarını sağlamak için web sitesinin hizmet şartlarını ve robots.txt dosyasını takip etmeyi unutmayın.