Python ile Amazon Ürünleri Nasıl Kazınır Öğrenin

Son güncelleme: August 20, 2026
Python ile Amazon Ürünleri Nasıl Kazınır Öğrenin

Bir Amazon kazıma rehberini izleyip de CAPTCHAlar, 503 hataları ya da tamamen boş sonuçlarla karşılaştıysanız — hoş geldiniz, yalnız değilsiniz. İnternette dolaşan python ile amazon ürünleri kazıma rehberlerinin çoğu 2022 ya da 2023’te yazıldı ve Amazon’un çoktan yamadığı selector’lar ve teknikler kullanıyor.

Thunderbit’te yıllardır veri çıkarma araçları geliştiriyorum ve sahadan bir şeyi net söyleyebilirim: Amazon, güvenilir şekilde kazımayı en zor sitelerden biri. Platform HTML yapısını sürekli değiştiriyor, altı katmanlı bir bot karşıtı savunma kullanıyor ve A/B testleriyle farklı kullanıcılara farklı sayfa düzenleri gösterebiliyor. Bu rehberde size, 2025’te gerçekten çalışan bir Python Amazon kazıyıcıyı adım adım göstereceğim — doğrulanmış CSS selector’ları, katmanlı bir engel aşma stratejisi ve çoğu rehberde hiç değinilmeyen planlama ve dışa aktarma ipuçlarıyla birlikte. Python ile uğraşmadan sadece veriye ulaşmak isteyenler için de Thunderbit ile aynı işi yaklaşık iki tıkta nasıl yapabileceğinizi göstereceğim.

Amazon Ürün Kazıma Nedir?

Amazon ürün kazıma, Amazon’un ürün ve arama sonucu sayfalarındaki herkesin erişebildiği verileri — ürün adları, fiyatlar, puanlar, yorum sayıları, görseller, stok durumu ve daha fazlasını — programatik olarak çekme işlemidir. Yüzlerce ürünü tek tek kopyalamak yerine, bir kazıyıcı her sayfayı ziyaret eder, HTML’i okur ve belirttiğiniz verileri CSV, Excel ya da veritabanı gibi yapılandırılmış bir formata aktarır.

Bunu, kahvenizi bitirene kadar bin ürün sayfasını ziyaret edebilecek yorulmak bilmez bir stajyer işe almak gibi düşünebilirsiniz. Üstelik bu stajyer hiçbir şeyi yanlış yazmaz ve öğle molasına ihtiyaç duymaz.

Neden Python ile Amazon Ürünleri Kazınır?

Amazon, 30’dan fazla kategoride yaklaşık 350–600 milyon ürün listesi barındırıyor ve bunun arkasında yaklaşık 9,7 milyon satıcı hesabı var. Üçüncü taraf satıcılar artık toplam GMV’nin %69’unu oluşturuyor. Bu kataloğun küçük bir bölümünü bile manuel takip etmek imkânsız. Takımların Amazon’u kazımasının başlıca nedenleri şöyle:

Kullanım SenaryosuKimler FaydalanırÇekilen Veriler
Fiyat takibi ve yeniden fiyatlandırmaE-ticaret operasyonları, pazar yeri satıcılarıFiyatlar, stok durumu, satıcı bilgileri
Rakip analiziÜrün yöneticileri, marka ekipleriÜrün özellikleri, puanlar, yorum sayıları
Pazar araştırmasıAnalistler, yeni ürün ekipleriKategori eğilimleri, fiyat dağılımları
Lead oluşturmaSatış ekipleriSatıcı adları, marka bilgisi, iletişim verileri
Affiliate pazarlamaİçerik üreticileri, fırsat siteleriFiyatlar, indirimler, ürün detayları
Stok takibiTedarik zinciri, satın alma ekipleriStok durumu, teslimat tahminleri

Amazon’daki fiyat değişimlerinin ölçeği bile otomasyonu zorunlu kılıyor: Amazon fiyatları günde 2,5 milyondan fazla kez değiştiriyor; ortalama bir ürünün fiyatı yaklaşık her 10 dakikada bir güncelleniyor. Buna karşılık Best Buy ve Walmart gibi rakipler ayda yalnızca yaklaşık 50.000 fiyat değişikliği yapıyor. Hiçbir insan ekibi buna yetişemez.

amazon-product-price-monitor-dashboard.webp

Python, kazıma sürecinin tüm kontrolünü size verir — neyi çekeceğinize, hataları nasıl yöneteceğinize ve veriyi nereye kaydedeceğinize siz karar verirsiniz. Ama bunun karşılığında bakım, engel aşma ve Amazon’un sık sık değişen HTML yapısına ayak uydurma sorumluluğu da size kalır.

Amazon’dan Neleri Kazıyabilirsiniz, Neleri Kazıyamazsınız?

Herkese açık ürün sayfalarından genellikle şunları çekebilirsiniz:

  • Ürün başlığı (ad, marka)
  • Fiyat (güncel, orijinal, kampanya fiyatı)
  • Puan (yıldız ortalaması)
  • Yorum sayısı
  • Ürün görselleri (ana görsel URL’si)
  • Stok / uygunluk durumu
  • ASIN (Amazon Standard Identification Number)
  • Ürün açıklaması ve madde işaretleri
  • Satıcı bilgileri
  • Ürün varyasyonları (beden, renk vb.)

Kaçınmanız gerekenler:

  • Giriş gerektiren alanların arkasındaki veriler: Genişletilmiş yorum sayfaları, kişisel hesap verileri, sipariş geçmişi
  • Kişisel bilgiler: Alıcı adları, adresler, ödeme bilgileri
  • Yeniden yayınlamak için telifli içerik: Ürün açıklamaları ve görseller analiz için kullanılabilir, ama bunları kendi içeriğiniz gibi yayımlamayın

Amazon’un robots.txt dosyası 50’den fazla bot adını engelliyor (GPTBot, Scrapy ve ClaudeBot dahil) ve kullanıcı hesapları, sepet ve istek listeleri gibi yolları yasaklıyor. Ürün detay sayfaları açıkça yasaklanmış değil; ancak Amazon’un Kullanım Şartları otomatik erişimi yasaklıyor. Mahkemeler genelde ToS ihlalleriyle (hukukî konu) CFAA kapsamındaki suç sayılabilecek ihlalleri ayırıyor — yasal tarafı rehberin sonunda daha detaylı ele alacağım.

Gerekli Araçlar ve Kütüphaneler

Bu eğitim için Python yığını şöyle:

KütüphaneAmaçNeden Kullanıyoruz
requestsHTTP istekleriBasit, yaygın desteklenir
beautifulsoup4HTML ayrıştırmaCSS selector tabanlı kolay veri çekme
lxmlHızlı HTML ayrıştırıcıBeautifulSoup’un parser altyapısı olarak kullanılır
curl_cffiTLS parmak izi taklidiAmazon’un tespit mekanizmasını aşmak için kritik
pandasVeri düzenleme ve dışa aktarmaDataFrame’ler, CSV/Excel çıktısı

İsteğe bağlı (JavaScript ile oluşturulan içerik için):

  • selenium veya playwright — headless tarayıcı otomasyonu

Python Ortamınızı Kurma

Terminali açın ve şunları çalıştırın:

mkdir amazon-scraper && cd amazon-scraper
python -m venv venv
source venv/bin/activate  # Windows'ta: venv\Scripts\activate
pip install requests beautifulsoup4 lxml curl_cffi pandas

Kurulumun tamamlandığını doğrulayın:

import requests, bs4, curl_cffi, pandas
print("Her şey yolunda!")

Hata almadan "Her şey yolunda!" görüyorsanız hazırsınız.

laptop-coding-workspace.webp

Çoğu Amazon Kazıma Rehberi Neden Bozuluyor? Bu Rehber Neden Farklı?

Çoğu rehberin atladığı bölüm burası; muhtemelen bu yazıyı okuyor olmanızın nedeni de tam olarak bu.

Amazon, HTML yapısını, sınıf adlarını ve element ID’lerini sık sık güncelliyor. Kazıma topluluğu, DOM değişimleri ve fingerprinting farklılıkları nedeniyle kâşiflerin %10–15’inin haftalık düzeltme gerektirdiğini bildiriyor. En meşhur örnek mi? 2018–2023 arasındaki yüzlerce rehberde geçen #priceblock_ourprice selector’ı. Bu ID artık Amazon ürün sayfalarında yok.

Nelerin bozulduğunu ve 2025’te nelerin çalıştığını hızlıca karşılaştıralım:

Veri NoktasıBozuk Selector (2024 Öncesi)2025’te Çalışan Selector
Fiyat#priceblock_ourpricediv#corePriceDisplay_desktop_feature_div span.a-price .a-offscreen
Başlık#productTitlespan#productTitle (hâlâ çalışıyor)
Puanspan.a-icon-alt (bazen yanlış bağlamda)#acrPopover span.a-icon-alt
Yorum Sayısı#acrCustomerReviewCountspan#acrCustomerReviewText
Uygunluk#availability spandiv#availability span.a-size-medium

Bu rehberdeki tüm kod parçaları 2025’te canlı Amazon sayfalarında test edildi. Size yalnızca çalışan CSS selector’ları göstereceğim — 2022’den kalma kör kopyala-yapıştır yok.

Başlamadan Önce

  • Zorluk seviyesi: Orta (temel Python bilgisi yeterli)
  • Gerekli süre: Tüm rehber için yaklaşık 30–45 dakika; temel kazıyıcı için yaklaşık 10 dakika
  • İhtiyacınız olacaklar: Python 3.9+, Chrome tarayıcısı (Amazon sayfalarını incelemek için), bir terminal ve kodsuz yaklaşımı karşılaştırmak isterseniz isteğe bağlı olarak Thunderbit Chrome Eklentisi

1. Adım: Amazon’a İlk İsteğinizi Gönderin

Tarayıcınızda herhangi bir Amazon ürün sayfasına gidin ve URL’yi kopyalayın. Basit bir requests.get() ile başlayacağız:

import requests

url = "https://www.amazon.com/dp/B0DGNFM9YJ"
response = requests.get(url)
print(response.status_code)
print(response.text[:500])

Bunu çalıştırdığınızda büyük olasılıkla bir 503 durum kodu ya da "Amazon verilerine otomatik erişimi görüşmek için lütfen iletişime geçin…" benzeri bir sayfa alırsınız. Bu, Python betiğinizi tespit eden Amazon WAF’inin (Web Application Firewall) tepkisidir. Uygun başlıklar olmadan atılan düz bir requests.get(), Amazon’a karşı yalnızca yaklaşık 2% başarı oranı sağlar.

Büyük ihtimalle 503 ve HTML içinde bir engelleme sayfası göreceksiniz. Bu beklenen bir durum — bir sonraki adımda düzelteceğiz.

2. Adım: Özel Başlıklar ve TLS Taklidi Kurun

Sadece User-Agent eklemek artık yeterli değil. Amazon, HTTP başlıklarınızı TLS parmak izinize göre de karşılaştırıyor. Chrome 120 gibi davranıp TLS el sıkışmanız Python’un requests kütüphanesini ele veriyorsa, anında işaretlenirsiniz.

2025’te en güvenilir yöntem, tarayıcı taklidi yapabilen curl_cffi kullanmaktır:

from curl_cffi import requests as cfreq

headers = {
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.9",
    "Accept-Encoding": "gzip, deflate, br",
    "Referer": "https://www.google.com/",
    "DNT": "1",
    "Connection": "keep-alive",
    "Upgrade-Insecure-Requests": "1",
}

url = "https://www.amazon.com/dp/B0DGNFM9YJ"
response = cfreq.get(url, headers=headers, impersonate="chrome124")
print(response.status_code)
print(len(response.text))

curl_cffi ile Chrome 124 taklidi yaptığınızda başarı oranı yaklaşık 94% seviyesine çıkar — düz requests kullanımına göre 47 katlık bir iyileşme. Şimdi 200 durum kodu ve çok daha uzun bir HTML yanıtı (100.000+ karakter) görmelisiniz.

Hâlâ 503 alıyorsanız, farklı bir impersonate değeri deneyin (örneğin "chrome131") ya da yeniden denemeden önce kısa bir bekleme ekleyin.

3. Adım: HTML’i Ayrıştırın ve Ürün Verilerini Çekin

Artık elimizde tam HTML olduğuna göre, doğrulanmış 2025 selector’larıyla veriyi çıkaralım:

from bs4 import BeautifulSoup

soup = BeautifulSoup(response.text, "lxml")

# Ürün Başlığı
title_el = soup.select_one("span#productTitle")
title = title_el.get_text(strip=True) if title_el else None

# Fiyat
price_el = soup.select_one(
    "div#corePriceDisplay_desktop_feature_div span.a-price .a-offscreen"
)
if not price_el:
    price_el = soup.select_one("span.priceToPay .a-offscreen")
if not price_el:
    price_el = soup.select_one(".apexPriceToPay .a-offscreen")
price = price_el.get_text(strip=True) if price_el else None

# Puan
rating_el = soup.select_one("#acrPopover span.a-icon-alt")
rating = rating_el.get_text(strip=True) if rating_el else None

# Yorum Sayısı
reviews_el = soup.select_one("span#acrCustomerReviewText")
reviews = reviews_el.get_text(strip=True) if reviews_el else None

# Uygunluk
avail_el = soup.select_one("div#availability span")
availability = avail_el.get_text(strip=True) if avail_el else None

# Ana Görsel URL'si
img_el = soup.select_one("#landingImage")
image_url = img_el.get("src") if img_el else None

print(f"Başlık: {title}")
print(f"Fiyat: {price}")
print(f"Puan: {rating}")
print(f"Yorumlar: {reviews}")
print(f"Uygunluk: {availability}")
print(f"Görsel: {image_url}")

Beklenen çıktı (örnek):

Başlık: Apple AirPods Pro (2. Nesil) USB-C ile
Fiyat: $189.99
Puan: 5 yıldız üzerinden 4.7
Yorumlar: 98.432 puanlama
Uygunluk: Stokta Var
Görsel: https://m.media-amazon.com/images/I/61SUj2...

Fiyat için birden fazla yedek selector kullandığına dikkat edin — Amazon, ürün tipine, kampanya durumuna ve A/B test varyantına göre farklı kapsayıcılar kullanır. Her çıkarma işlemini koşullu kontrolle sarmak, selector eşleşmediğinde kazıyıcınızın çökmesini önler.

4. Adım: Arama Sonuçlarından Birden Fazla Ürün Kazıyın

Gerçek bir veri seti oluşturmak için Amazon arama sonuçları sayfasından başlamalı, ASIN’leri toplamalı ve ardından her ürün detay sayfasını kazımalısınız.

import time
import random

def get_search_asins(keyword, max_pages=1):
    """Amazon arama sonuçlarından ASIN toplar."""
    asins = []
    for page in range(1, max_pages + 1):
        search_url = f"https://www.amazon.com/s?k={keyword}&page={page}"
        resp = cfreq.get(search_url, headers=headers, impersonate="chrome124")
        if resp.status_code != 200:
            print(f"Arama sayfası {page} {resp.status_code} döndürdü")
            break

        search_soup = BeautifulSoup(resp.text, "lxml")
        results = search_soup.select('div[data-component-type="s-search-result"]')

        for r in results:
            asin = r.get("data-asin")
            if asin:
                asins.append(asin)

        print(f"Sayfa {page}: {len(results)} ürün bulundu")
        time.sleep(random.uniform(2, 5))  # Nazik bekleme

    return asins

asins = get_search_asins("wireless+earbuds", max_pages=2)
print(f"Toplam {len(asins)} ASIN toplandı")

Her ASIN, temiz bir ürün URL’sine karşılık gelir: https://www.amazon.com/dp/{ASIN}. Bu yöntem, oturum bazlı parametreler içerebilen tam arama sonuç URL’lerine göre daha güvenilirdir.

5. Adım: Sayfalama ile Büyük Ölçekte Kazıma Yapın

Şimdi arama toplama ve detay sayfası kazımayı tam bir iş akışında birleştirelim:

import pandas as pd

def scrape_product(asin):
    """Tek bir Amazon ürün detay sayfasını kazır."""
    url = f"https://www.amazon.com/dp/{asin}"
    try:
        resp = cfreq.get(url, headers=headers, impersonate="chrome124")
        if resp.status_code != 200:
            return None

        soup = BeautifulSoup(resp.text, "lxml")

        title_el = soup.select_one("span#productTitle")
        price_el = (
            soup.select_one("div#corePriceDisplay_desktop_feature_div span.a-price .a-offscreen")
            or soup.select_one("span.priceToPay .a-offscreen")
            or soup.select_one(".apexPriceToPay .a-offscreen")
        )
        rating_el = soup.select_one("#acrPopover span.a-icon-alt")
        reviews_el = soup.select_one("span#acrCustomerReviewText")
        avail_el = soup.select_one("div#availability span")
        img_el = soup.select_one("#landingImage")

        return {
            "asin": asin,
            "title": title_el.get_text(strip=True) if title_el else None,
            "price": price_el.get_text(strip=True) if price_el else None,
            "rating": rating_el.get_text(strip=True) if rating_el else None,
            "reviews": reviews_el.get_text(strip=True) if reviews_el else None,
            "availability": avail_el.get_text(strip=True) if avail_el else None,
            "image_url": img_el.get("src") if img_el else None,
            "url": url,
        }
    except Exception as e:
        print(f"{asin} kazınırken hata oluştu: {e}")
        return None

# Toplanan tüm ASIN'leri kazı
products = []
for i, asin in enumerate(asins):
    print(f"Kazınıyor {i+1}/{len(asins)}: {asin}")
    product = scrape_product(asin)
    if product:
        products.append(product)
    time.sleep(random.uniform(2, 5))  # İstekler arasında rastgele gecikme

df = pd.DataFrame(products)
print(f"\nBaşarıyla kazınan ürün sayısı: {len(df)}")
print(df.head())

İstekler arasında 2–5 saniyelik rastgele gecikme kritik öneme sahiptir. Her seferinde tam aynı sürede (örneğin daima 3 saniye) istek atmak, Amazon’un davranış analizine şüpheli görünür. Rastgele aralıklar insan gezinme alışkanlıklarını taklit eder.

6. Adım: Kazınan Amazon Verilerini CSV’ye Kaydedin

df.to_csv("amazon_products.csv", index=False, encoding="utf-8-sig")
print("amazon_products.csv dosyasına kaydedildi")

Artık ASIN, başlık, fiyat, puan, yorumlar, uygunluk, görsel URL’si ve ürün URL’si içeren temiz bir CSV’niz olmalı. Çoğu rehber tam burada durur — ama gerçek bir iş akışı kuruyorsanız CSV sadece başlangıçtır.

Engel Aşma Detayları: Kazıyıcınızı Nasıl Ayakta Tutarsınız?

Python ile Amazon ürünleri kazımaya çalışan herkesin bir numaralı sorunu engellenmektir. Amazon’un altı katmanlı savunması; IP itibarı analizi, TLS parmak izi, tarayıcı ortam kontrolleri, davranışsal biyometriler, CAPTCHA’lar ve ML tabanlı anomali tespitini içerir. Aşağıda her biri için katmanlı bir strateji yer alıyor.

User-Agent ve Tüm Başlıkları Döndürün

Tek bir sabit User-Agent çok hızlı işaretlenir. Güncel tarayıcı dizeleri arasında dönüşüm yapın:

import random

USER_AGENTS = [
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0",
    "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/26.0 Safari/605.1.15",
]

def get_headers():
    return {
        "User-Agent": random.choice(USER_AGENTS),
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.9",
        "Accept-Encoding": "gzip, deflate, br",
        "Referer": "https://www.google.com/",
        "DNT": "1",
        "Connection": "keep-alive",
    }

İnsanların sık düştüğü bir ayrıntı: Accept-Language değeri IP’nizin işaret ettiği coğrafi konumla uyumlu olmalı. Almanya’daki bir IP’den Accept-Language: en-US göndermek kırmızı bayraktır.

curl_cffi ile TLS Parmak İzi Taklidi

Bunu 2. adımda gördük, ama tekrar vurgulamakta fayda var: başarı oranını en çok artıran tek teknik budur. Standart Python requests, Amazon’a karşı yaklaşık %2 başarı sağlar. curl_cffi taklidiyle bu oran yaklaşık %94’e çıkar. Çalışan bir kazıyıcı ile kırık bir kazıyıcı arasındaki fark budur.

from curl_cffi import requests as cfreq

# Taklit hedeflerini de döndürün
BROWSERS = ["chrome120", "chrome124", "chrome131"]

response = cfreq.get(
    url,
    headers=get_headers(),
    impersonate=random.choice(BROWSERS),
)

Proxy Döndürme

Bir avuç sayfadan fazlasını kazıyorsanız proxy rotasyonu gerekir. Amazon IP adreslerini takip eder ve çok fazla istek atan tek bir IP’yi engeller.

PROXIES = [
    "http://user:pass@proxy1.example.com:8080",
    "http://user:pass@proxy2.example.com:8080",
    "http://user:pass@proxy3.example.com:8080",
]

proxy = random.choice(PROXIES)
response = cfreq.get(
    url,
    headers=get_headers(),
    impersonate="chrome124",
    proxies={"http": proxy, "https": proxy},
)

Residential proxy’ler veri merkezi proxy’lerinden daha etkilidir (Amazon veri merkezi IP aralıklarını proaktif olarak engeller), ancak daha pahalıdır. Küçük bir proje için ücretli bir proxy hizmetiyle başlayıp ihtiyaç oldukça ölçekleyebilirsiniz.

Hız Sınırlama ve Üstel Geri Çekilme

İncelediğim rakip makalelerin hiçbiri buna değinmiyor ama bu çok önemli. 503 ya da CAPTCHA yanıtı aldığınızda hemen tekrar denemeyin — bu, kalıcı yasaklanmaya giden hızlı yoldur.

import time
import random

def fetch_with_backoff(url, max_retries=3):
    """Başarısızlık durumunda üstel geri çekilme ile URL çeker."""
    for attempt in range(max_retries):
        response = cfreq.get(
            url,
            headers=get_headers(),
            impersonate=random.choice(BROWSERS),
        )
        if response.status_code == 200:
            return response

        # Rastgeleleşmiş üstel geri çekilme
        wait = min(2 ** attempt + random.uniform(0, 1), 30)
        print(f"Deneme {attempt+1} başarısız ({response.status_code}). {wait:.1f}s bekleniyor...")
        time.sleep(wait)

    return None  # Tüm denemeler tükendi

wait = min(2^attempt + jitter, max_delay) formülü beklemelerinizi büyütür (2 sn, 4 sn, 8 sn...) ama mantıklı bir üst sınırı aşmaz. Rastgele jitter, yeniden deneme kalıbınızın parmak iziyle tespit edilmesini zorlaştırır.

JavaScript ile Yüklenen İçerik İçin Selenium veya Playwright Yedeği

Bazı Amazon sayfalarının (özellikle dinamik fiyat bileşenleri veya varyasyon seçicileri olanların) tamamen yüklenmesi için JavaScript gerekir. curl_cffi eksik HTML döndürdüğünde, headless tarayıcıyı yedek olarak kullanın:

from playwright.sync_api import sync_playwright

def scrape_with_browser(url):
    with sync_playwright() as p:
        browser = p.chromium.launch(headless=True)
        page = browser.new_page()
        page.goto(url, wait_until="domcontentloaded")
        page.wait_for_timeout(3000)  # JS'in yüklenmesini bekle
        html = page.content()
        browser.close()
        return html

Bu yöntem daha yavaştır — curl_cffi ile sayfa başına 1 saniyenin altı yerine 3–5 saniye sürebilir. Yalnızca gerektiğinde kullanın.

Benim deneyimimde curl_cffi, Amazon ürün sayfalarının %90+ kısmını tarayıcı olmadan işleyebiliyor.

Engel Aşma Özeti

TeknikZorlukEtkililikÇoğu Rehberde Var mı?
Özel User-AgentKolayDüşük (Amazon kalıpları tespit eder)Evet
Tam başlık rotasyonuKolayOrtaNadiren
TLS taklidi (curl_cffi)OrtaYüksek (~94% başarı)Hemen hiç
Proxy rotasyonuOrtaYüksekKısaca, varsa
Hız sınırlama + üstel geri çekilmeKolayOrtaHayır
Selenium/Playwright yedeğiOrtaYüksek (JS içeriği için)Bahsedilir, gösterilmez

CSV’nin Ötesi: Kazınan Amazon Verilerini Google Sheets, Airtable ve Daha Fazlasına Aktarma

İncelediğim her rehber CSV dışa aktarmayla bitiyor. Oysa gerçek iş akışları veriyi Google Sheets’e, veritabanlarına ya da Airtable ve Notion gibi araçlara ister.

gspread ile Google Sheets’e Aktarma

Önce bir Google servis hesabı kurun (tek seferlik kurulum):

  1. Google Cloud Console → APIs & Services → Credentials bölümüne gidin
  2. Bir servis hesabı oluşturun ve JSON anahtar dosyasını indirin
  3. Dosyayı ~/.config/gspread/service_account.json konumuna kaydedin
  4. Hedef tablonuzu JSON dosyasındaki client_email ile paylaşın

Sonra:

import gspread
from gspread_dataframe import set_with_dataframe

gc = gspread.service_account()
sh = gc.open("Amazon Scrape Data")
worksheet = sh.sheet1

set_with_dataframe(worksheet, df)
print("Veriler Google Sheets'e aktarıldı!")

Bu, tüm DataFrame’inizi doğrudan bir Google Sheet’e yazar — canlı, paylaşılabilir ve pano kullanımı için hazır.

Yerel Analiz İçin SQLite’a Kaydetme

Daha büyük veri kümeleri veya geçmiş takibi için SQLite mükemmeldir — sunucu kurulumu yok, tek bir dosya yeterli:

import sqlite3

conn = sqlite3.connect("amazon_products.db")
df.to_sql("products", conn, if_exists="append", index=False)
print(f"{len(df)} ürün SQLite'a kaydedildi")

# Sonradan sorgulama:
historical = pd.read_sql_query(
    "SELECT * FROM products WHERE price IS NOT NULL ORDER BY rowid DESC LIMIT 100",
    conn,
)

Kodsuz Alternatif

Python dışa aktarma betiklerini sürdürmek istemiyorsanız, Thunderbit Google Sheets, Airtable, Notion, Excel, CSV ve JSON’a ücretsiz dışa aktarma sunar — ayrıca Airtable ve Notion’da doğrudan render olan görsel alanları da destekler. gspread kurulumu yok, API bilgisi yok, hiç kod yok. Verinin mevcut araçlarınıza akması gereken ekipler için ciddi bir zaman tasarrufu sağlar.

Otomatik Amazon Kazımalarını Planlama — Eksik Kalan Bölüm

Fiyat takibi ve stok izleme, tek seferlik çalıştırmalar değil, tekrar eden kazımalar gerektirir. Yine de rakip makalelerde planlamaya değinen tek bir yazı bulamadım. İşte Python kazıyıcınızı nasıl otomatikleştireceğiniz.

Cron Job’ları (Linux/macOS)

Crontab dosyanızı açın:

crontab -e

Kazıyıcınızı her gün sabah 6’da çalıştıracak bir satır ekleyin:

0 6 * * * cd /path/to/amazon-scraper && /path/to/venv/bin/python scraper.py >> ~/scraper.log 2>&1

Ya da her 6 saatte bir:

0 */6 * * * cd /path/to/amazon-scraper && /path/to/venv/bin/python scraper.py >> ~/scraper.log 2>&1

Windows Task Scheduler

run_scraper.bat adlı bir batch dosyası oluşturun:

@echo off
cd /d "C:\path\to\amazon-scraper"
call venv\Scripts\activate
python scraper.py
deactivate

Sonra Task Scheduler’ı açın → Create Basic Task → tetikleyicinizi ayarlayın (Daily, Hourly) → Action: "Start a program" → run_scraper.bat dosyasını seçin.

GitHub Actions (Ücretsiz Katman)

Sıfır altyapı ile bulut tabanlı bir planlama için:

name: Amazon Scraper

on:
  schedule:
    - cron: "0 6 * * *"  # Her gün UTC 06:00
  workflow_dispatch:       # Manuel tetikleme

jobs:
  scrape:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Set up Python
        uses: actions/setup-python@v4
        with:
          python-version: "3.11"
      - name: Install dependencies
        run: pip install -r requirements.txt
      - name: Run scraper
        run: python scraper.py
      - name: Commit results
        run: |
          git config user.name 'GitHub Actions'
          git config user.email 'actions@github.com'
          git add data/
          git diff --staged --quiet || git commit -m "Kazınan verileri güncelle"
          git push

Proxy kimlik bilgilerini GitHub Secrets’ta saklayın; böylece ücretsiz, otomatik bir kazıma hattınız olur.

Kodsuz Alternatif: Thunderbit’in Scheduled Scraper’ı

Cron sözdizimi ya da bulut altyapısı yönetmek istemeyen ekipler için Thunderbit, yerleşik bir Scheduled Scraper sunar. Takvimi düz İngilizceyle tarif edersiniz (örneğin “her gün saat 8’de” ya da “her pazartesi”), Amazon URL’lerinizi eklersiniz ve "Schedule" düğmesine basarsınız. Terminal yok, YAML dosyası yok, dağıtım hattı yok. Özellikle sürekli fiyat veya stok takibi yapan e-ticaret ekipleri için çok kullanışlıdır.

Python ile Kendin Yap, Scraper API, Yoksa Kodsuz Çözüm mü? Hangisini Seçmelisiniz?

Forumlarda sürekli karşılaştığım bir soru ve üst sıralardaki hiçbir makale buna yapılandırılmış bir cevap vermiyor. O yüzden dürüst görüşüm şöyle:

KriterPython + BS4/curl_cffiScraper API (ScraperAPI, Oxylabs)Kodsuz (Thunderbit)
Kurulum süresi30–60 dk10–20 dk~2 dakika
Kod gerekir mi?Evet (Python)Evet (API çağrıları)Hayır
Engel aşma yerleşik mi?Hayır (kendin yap)EvetEvet
JS render desteğiYalnızca Selenium/Playwright ileSağlayıcıya göre değişirEvet (Tarayıcı veya Bulut modu)
PlanlamaKendin yap (cron/bulut)Bazılarında varYerleşik
MaliyetÜcretsiz (+ proxy maliyeti)Aylık $30–100+Ücretsiz plan mevcut
BakımYüksek (selector’lar bozulur)DüşükYok (AI uyum sağlar)
En iyi kullanımTam kontrol isteyen geliştiricilerÖlçek ve güvenilirlikHız, geliştirici olmayanlar, iş kullanıcıları

Öğrenmek, her detayı özelleştirmek ve devam eden bakımı sorun etmemek istiyorsanız Python doğru seçimdir. Scraper API’leri engel aşmayı sizin yerinize yapar ama yine de kod gerektirir. Thunderbit ise satış, e-ticaret operasyonları veya sadece veriye ihtiyaç duyan herkes için en hızlı yoldur — selector yok, kod yok, Amazon HTML’i değiştiğinde bakım yok.

Thunderbit Amazon Ürünlerini 2 Tıkta Nasıl Kazır?

Elbette biraz taraflıyım — bu ürünü ekibimiz geliştirdi. Ama iş akışı gerçekten bu kadar basit:

  1. Thunderbit Chrome Eklentisini kurun
  2. Amazon arama sonuçları ya da ürün sayfasına gidin
  3. "AI Alanları Öner" düğmesine tıklayın (ya da hazır Amazon kazıyıcı şablonunu kullanın)
  4. "Kazı" düğmesine tıklayın

Thunderbit’in yapay zekâsı sayfayı okur, veri yapısını tanır ve her şeyi temiz bir tabloya aktarır. Ücretsiz olarak Excel, Google Sheets, Airtable veya Notion’a aktarabilirsiniz. Asıl avantaj şu: Amazon gelecek hafta HTML yapısını değiştirdiğinde (ve değiştirecek), Thunderbit’in yapay zekâsı otomatik uyum sağlar. Bozuk betikler yok, selector güncellemesi yok.

Ürün listelerini detay sayfası verileriyle zenginleştirmek istiyorsanız Thunderbit’in Subpage Scraping özelliği bağlantıları otomatik olarak ürün sayfalarına takip eder ve görseller, açıklamalar, varyasyonlar gibi ek alanları çeker — Python’da bunun için hatırı sayılır ek kod gerekir.

Python Amazon Kazıyıcınızı Uzun Vadede Çalışır Tutma İpuçları

Python yolunu seçiyorsanız, bakım yükünü azaltmak için şunları yapın:

  • Selector’ları düzenli kontrol edin. Amazon bunları sık sık değiştirir. Bu makaleyi yer imlerine ekleyin — değişiklik oldukça selector tablosunu güncelleyeceğim.
  • Başarı oranınızı izleyin. 200 yanıtlarının 503/CAPTCHAlara oranını takip edin. Başarı oranı %80’in altına düşerse bir uyarı kurun (basit bir e-posta bile yeterli).
  • Ham HTML’i saklayın. Ayrıştırılmış verilerle birlikte tam HTML yanıtını da kaydedin. Selector’lar değişirse veriyi yeniden kazımadan geçmiş verileri tekrar ayrıştırabilirsiniz.
  • Proxy ve User-Agent’ları sık sık döndürün. Sabit parmak izleri ölçek büyüdüğünde saatler içinde işaretlenir.
  • Üstel geri çekilme kullanın. Bir engelden hemen sonra asla anında yeniden denemeyin.
  • Docker ile konteynerleştirin. Kolay dağıtım ve taşınabilirlik için kazıyıcınızı bir Docker kapsayıcısına alın.
  • Veri doğrulama ekleyin. Fiyatların sayısal olduğunu, puanların 1–5 arasında olduğunu ve başlıkların boş olmadığını kontrol edin. Bir ekip, doğrulama katmanları ekledikten sonra alt hatalarda %21 azalma bildirdi.

Ya da bunların hepsi size beklediğinizden fazla iş gibi geliyorsa, kullanım senaryonuz için Thunderbit gibi kodsuz bir aracın daha uygun olup olmadığını düşünün. Daha hızlı yolu seçmekte hiçbir sakınca yok — yıllarca kazıyıcı debug ettikten sonra, bazen en iyi kodun yazmanız gerekmeyen kod olduğunu biliyorum.

Amazon Kazırken Hukukî ve Etik Hususlar

Amazon kazıma denince her konuşmada gündeme geldiği için, hukukî tabloya kısa bir not:

  • Herkese açık verileri kazımak ABD’de genellikle yasaldır. Çığır açan hiQ Labs v. LinkedIn kararı (2022), herkese açık verilere erişmenin CFAA’yı ihlal etmediğini ortaya koydu. Daha yakın tarihte Meta v. Bright Data (2024) ve X v. Bright Data (2024) kararları da bu yaklaşımı güçlendirdi.
  • Amazon’un Kullanım Şartları otomatik erişimi yasaklıyor. Bu, cezaî değil, hukukî bir konudur (sözleşme ihlali). Mahkemeler genelde bu ikisini ayırır.
  • Amazon v. Perplexity (2025), Amazon sayfalarının yapay zekâ ile kazınmasını konu alan aktif bir dava. Mart 2026’da geçici tedbir kararı verildi. Takip etmeye değer.
  • Kamuya açık sayfalarla sınırlı kalın. Giriş korumalı içerikleri, kişisel verileri veya kimlik doğrulama arkasındaki herhangi bir şeyi kazımayın.
  • Hız sınırlarına saygı gösterin. Amazon’un sunucularını aşırı zorlamayın. İstekler arasında 2–5 saniyelik gecikme makuldür.
  • Veriyi sorumlu kullanın. Kazımayı, telifli içeriği yeniden yayımlamak için değil, analiz için yapın.
  • Büyük ölçekli ticari kullanım için hukuk danışmanına başvurun; özellikle AB’deyseniz (kişisel veriler için GDPR geçerlidir).

Daha derin bir inceleme için web scraping hukuki sonuçları rehberimize bakabilirsiniz.

Kapanış

Artık doğrulanmış 2025 selector’larına sahip çalışan bir Python Amazon kazıyıcınız, "User-Agent ekle" demekten çok daha fazlasını yapan katmanlı bir engel aşma stratejiniz, sürekli izleme için pratik planlama seçenekleriniz ve verinizi Google Sheets, veritabanları veya ekibinizin kullandığı herhangi bir araca taşıyacak dışa aktarma yöntemleriniz var.

Kısa özet:

  • Python + curl_cffi + BeautifulSoup, TLS taklidiyle birlikte kullanıldığında tam kontrol ve yaklaşık %94 başarı oranı sağlar
  • Engel aşma çok katmanlıdır: başlık rotasyonu, TLS taklidi, proxy rotasyonu, hız sınırlama ve üstel geri çekilme gerekir
  • Planlama, tek seferlik bir betiği sürekli izleme hattına dönüştürür (cron, GitHub Actions veya Thunderbit’in yerleşik zamanlayıcısı)
  • CSV’nin ötesine dışa aktarma — Google Sheets, SQLite, Airtable, Notion — asıl iş değerinin oluştuğu yerdir
  • Thunderbit, veriyi ayrıştırıcıları debug etmek yerine analiz etmek isteyen geliştirici olmayanlar için 2 tıklık bir alternatif sunar

Kodu denemek isterseniz, bu rehberdeki her şey kopyalayıp çalıştırmaya hazır. Kod yazmadan ilerlemeyi tercih ederseniz, Thunderbit’in ücretsiz planı ile Amazon üzerinde kodsuz yaklaşımı hemen test edebilirsiniz.

Daha fazlası için Amazon ürünlerini ve yorumlarını nasıl kazırsınız, en iyi Python web kazıma araçları ve Amazon fiyatlarını kazıma rehberlerimize göz atın. Ayrıca Thunderbit YouTube Kanalı üzerinden adım adım anlatımları izleyebilirsiniz.

Keyifli kazımalar — ve selector’larınız bir sonraki Amazon güncellemesine kadar hayatta kalsın.

SSS

1. Python Amazon kazıyıcım neden birkaç istekten sonra engelleniyor?

Amazon altı katmanlı bir savunma sistemi kullanır: IP itibarı analizi, TLS parmak izi (JA3/JA4), tarayıcı ortam tespiti, davranışsal biyometriler, CAPTCHA denemeleri ve ML tabanlı anomali tespiti. Sadece User-Agent başlığı olan basit bir requests betiği yaklaşık yalnızca 2% başarı elde eder. Güvenilir erişim için TLS taklidi (curl_cffi), tam başlık rotasyonu, proxy rotasyonu ve rastgele jitter içeren hız sınırlama gerekir.

2. 2025’te Amazon ürünleri kazımak için en iyi Python kütüphaneleri hangileri?

TLS taklitli HTTP istekleri için curl_cffi (tek başına en büyük iyileştirme), HTML ayrıştırma için BeautifulSoup4 + lxml, veri düzenleme ve dışa aktarma için pandas, JavaScript ile yüklenen içerikler için de yedek olarak Selenium veya Playwright en iyi seçeneklerdir. Python, kazıma geliştiricilerinin 69,6% tarafından kullanılıyor.

3. Amazon ürün verilerini kazımak yasal mı?

Herkese açık verileri kazımak ABD’de genellikle yasaldır; bunu hiQ v. LinkedIn ve Meta v. Bright Data gibi kararlar destekler. Amazon’un Kullanım Şartları otomatik erişimi yasaklar, ancak mahkemeler ToS ihlalleriyle cezaî ihlalleri ayırır. Giriş korumalı içeriklerden kaçının, hız sınırlarına uyun ve büyük ölçekli ticari kullanımda hukuk danışmanı alın.

4. Hiç kod yazmadan Amazon kazıyabilir miyim?

Evet. Thunderbit gibi araçlar, Chrome eklentisiyle Amazon ürünlerini 2 tıkta kazımanızı sağlar. Yapay zekâ destekli alan tespiti veriyi otomatik olarak yapılandırır ve veriyi ücretsiz olarak Excel, Google Sheets, Airtable veya Notion’a aktarabilirsiniz. Amazon HTML yapısını değiştirdiğinde Thunderbit’in yapay zekâsı manuel güncelleme olmadan uyum sağlar.

5. Amazon HTML selector’larını ne sıklıkla değiştirir ve kazıyıcımı nasıl güncel tutarım?

Sık sık ve önceden haber vermeden. Kazıma topluluğu, DOM değişiklikleri nedeniyle kâşiflerin 10–15% kadarının haftalık düzeltme gerektirdiğini bildiriyor. Önde kalmak için kazıyıcınızın başarı oranını izleyin, ham HTML’i yeniden ayrıştırmak üzere saklayın ve selector’ları canlı sayfalarda düzenli kontrol edin. Alternatif olarak Thunderbit gibi yapay zekâ destekli araçlar otomatik uyum sağlar ve bu bakım yükünü ortadan kaldırır.

Daha Fazla Bilgi

Shuai Guan
Shuai Guan
Thunderbit CEO’su | AI Veri Otomasyonu Uzmanı Shuai Guan, Thunderbit’in CEO’su ve University of Michigan Mühendislik mezunudur. Teknoloji ve SaaS mimarisi alanındaki yaklaşık on yıllık deneyiminden güç alarak, karmaşık yapay zeka modellerini pratik, kod yazmadan kullanılabilen veri çıkarma araçlarına dönüştürme konusunda uzmanlaşmıştır. Bu blogda, daha akıllı ve veriye dayalı iş akışları kurmanıza yardımcı olmak için web kazıma ve otomasyon stratejileri üzerine filtresiz, sahada sınanmış içgörüler paylaşıyor. Veri iş akışlarını optimize etmediği zamanlarda ise aynı detay odaklı yaklaşımını fotoğrafçılık tutkusuna da yansıtıyor.
İçindekiler
Thunderbit · AI web veri ajanı

Herhangi bir sayfadan 1 tık içinde veri çıkar

250.000+ kullanıcı tarafından güveniliyor
ücretsiz plan mevcut
Web sayfasından tabloya
İhtiyacını anlat — Thunderbit’in AI Ajanı bunu çeker ve Excel, Google Sheets, Airtable veya Notion’a aktarır. Başlamak ücretsiz.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week