Thread Starter
#0
Dinamik web sayfaları, kullanıcı etkileşimlerine bağlı olarak içeriği değiştiren veya yükleyen bir yapıya sahiptir. Bu durum, web scraping (veri çekme) işlemlerinde bazı zorluklar yaratabilir. Özellikle, içerik JavaScript ile oluşturulduğunda, BeautifulSoup gibi kütüphanelerle doğrudan erişim sağlamak zorlaşır. Bu yazıda, dinamik sayfa yüklenme gecikmelerini aşmak için kullanılabilecek yöntemleri ve bu verilerin MySQL ya da MariaDB’ye kayıt edilme süreçlerini inceleyeceğiz.
Öncelikle, dinamik içerik yüklemesi olan bir sayfayı ele alalım. Bu tür sayfalarda, içeriği elde etmek için genellikle Selenium gibi bir araç kullanmak gerekir. Selenium, tarayıcı otomasyonu sağlayarak, sayfanın yüklenmesini bekleyebilir ve ardından içeriği çekebilir. Aşağıdaki adımlar, verileri çekmek ve veritabanına kaydetmek için izlenebilir:
Bu yöntem, dinamik sayfalardan veri çekerken karşılaşılabilecek gecikmeleri ortadan kaldırır ve verilerin veritabanına düzgün bir şekilde kaydedilmesini sağlar. Kullanıcı etkileşimine bağlı olarak yüklenen içerikleri verimli bir şekilde elde etmek için bu yaklaşım oldukça etkilidir. Veritabanı işlemlerini hızlandırmak için ayrıca işlem sonrası bağlantıları kapatmayı unutmayın.
Öncelikle, dinamik içerik yüklemesi olan bir sayfayı ele alalım. Bu tür sayfalarda, içeriği elde etmek için genellikle Selenium gibi bir araç kullanmak gerekir. Selenium, tarayıcı otomasyonu sağlayarak, sayfanın yüklenmesini bekleyebilir ve ardından içeriği çekebilir. Aşağıdaki adımlar, verileri çekmek ve veritabanına kaydetmek için izlenebilir:
- Gerekli Kütüphanelerin Kurulumu: Python ortamında
beautifulsoup4,requests,selenium, vemysql-connector-pythongibi kütüphaneleri kurun.
CODE
1 pip install beautifulsoup4 requests selenium mysql-connector-python- Selenium ile Sayfanın Yüklenmesini Beklemek: Selenium kullanarak bir tarayıcı açın ve sayfanın tamamen yüklenmesini beklemek için
WebDriverWaitfonksiyonunu kullanın.
CODE
12345678 from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('https://example.com/dynamic-page')
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, 'dynamic-element')))- Veri Çekme: Sayfanın tamamı yüklendikten sonra, BeautifulSoup ile gerekli verileri çekin.
CODE
1234 from bs4 import BeautifulSoup
soup = BeautifulSoup(driver.page_source, 'html.parser')
data = soup.find_all('div', class_='data-class')- Veritabanına Kayıt: Elde edilen verileri MySQL/MariaDB veritabanına kaydedin.
CODE
12345678910111213141516 import mysql.connector
connection = mysql.connector.connect(
host='localhost',
user='your_username',
password='your_password',
database='your_database'
)
cursor = connection.cursor()
for item in data:
cursor.execute("INSERT INTO your_table (column_name) VALUES (%s)", (item.text,))
connection.commit()
cursor.close()
connection.close()Bu yöntem, dinamik sayfalardan veri çekerken karşılaşılabilecek gecikmeleri ortadan kaldırır ve verilerin veritabanına düzgün bir şekilde kaydedilmesini sağlar. Kullanıcı etkileşimine bağlı olarak yüklenen içerikleri verimli bir şekilde elde etmek için bu yaklaşım oldukça etkilidir. Veritabanı işlemlerini hızlandırmak için ayrıca işlem sonrası bağlantıları kapatmayı unutmayın.