Konuyu Açan #1
Scraping İçin SQLite Cache Kurulumu

Web scraping projelerinde performansı artırmak ve aşırı istekleri önlemek adına cache mekanizmaları geliştirmek oldukça önemlidir. Bu noktada SQLite, hafif ve kolay kullanılabilen bir yerel veritabanı çözümü olarak öne çıkar. SQLite kullanarak cache kurmak, özellikle büyük hacimli veri toplama işlemlerinde tekrar eden istekleri minimize eder ve süreci hızlandırır.

İlk adım olarak, SQLite veritabanını ve ilgili tablonun oluşturulmasını sağlamak gerekir. Örneğin, temel bir cache tablosu, URL ve alınan içeriği depolayacak şekilde tasarlanabilir:

KOD
123456
CREATE TABLE IF NOT EXISTS cache (
    url TEXT PRIMARY KEY,
    content BLOB,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);


Burada, ‘url’ alanı isteğin hedef URL’sini temsil ederken, ‘content’ ise alınan sayfanın HTML içeriğini tutar. ‘timestamp’ ise verinin en son ne zaman güncellendiğini gösterir.

Ardından, scraping sırasında öncelikle cache’de olup olmadığını kontrol etmek gerekir. Eğer varsa, veriyi yeniden indirmeye gerek kalmadan doğrudan kullanılır. Yoksa, HTTP isteği yapılarak içerik alınır ve bu içerik cache’e kaydedilir. Python ve SQLite kullanıyorsanız, basit bir örnek şu şekilde olabilir:

KOD
12345678910111213141516171819
import sqlite3
import requests

conn = sqlite3.connect('cache.db')
cursor = conn.cursor()

def get_page(url):
    cursor.execute("SELECT content FROM cache WHERE url=?", (url,))
    row = cursor.fetchone()
    if row:
        print("Cache kullanılıyor.")
        return row[0]
    else:
        response = requests.get(url)
        content = response.text
        cursor.execute("INSERT OR REPLACE INTO cache (url, content) VALUES (?, ?)", (url, content))
        conn.commit()
        return content


Bu temel yapı, istekleri tekrarlamadan önce cache’e başvurmayı sağlar. Ayrıca, cache’in güncelliğini kontrol etmek veya belirli bir süre sonra yenilemek için ‘timestamp’ alanını kullanmak da mümkündür.

Sonuç olarak, SQLite tabanlı cache mekanizması, scraping projelerinde hem performansı artırır hem de aşırı istek sınırlarını aşmadan verimli veri toplama sağlar. Bu yapı, özellikle yoğun ve uzun süreli tarama işlemlerinde sistem kaynaklarını korumaya yardımcı olur.

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi