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

Son güncelleme: April 16, 2026

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 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 barındırıyor ve bunun arkasında yaklaşık 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 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 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:

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

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

1import requests, bs4, curl_cffi, pandas
2print("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 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

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:

1import requests
2url = "https://www.amazon.com/dp/B0DGNFM9YJ"
3response = requests.get(url)
4print(response.status_code)
5print(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 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, .

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

1from curl_cffi import requests as cfreq
2headers = {
3    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
4    "Accept-Language": "en-US,en;q=0.9",
5    "Accept-Encoding": "gzip, deflate, br",
6    "Referer": "https://www.google.com/",
7    "DNT": "1",
8    "Connection": "keep-alive",
9    "Upgrade-Insecure-Requests": "1",
10}
11url = "https://www.amazon.com/dp/B0DGNFM9YJ"
12response = cfreq.get(url, headers=headers, impersonate="chrome124")
13print(response.status_code)
14print(len(response.text))

curl_cffi ile Chrome 124 taklidi yaptığınızda başarı oranı yaklaşık 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:

1from bs4 import BeautifulSoup
2soup = BeautifulSoup(response.text, "lxml")
3# Ürün Başlığı
4title_el = soup.select_one("span#productTitle")
5title = title_el.get_text(strip=True) if title_el else None
6# Fiyat
7price_el = soup.select_one(
8    "div#corePriceDisplay_desktop_feature_div span.a-price .a-offscreen"
9)
10if not price_el:
11    price_el = soup.select_one("span.priceToPay .a-offscreen")
12if not price_el:
13    price_el = soup.select_one(".apexPriceToPay .a-offscreen")
14price = price_el.get_text(strip=True) if price_el else None
15# Puan
16rating_el = soup.select_one("#acrPopover span.a-icon-alt")
17rating = rating_el.get_text(strip=True) if rating_el else None
18# Yorum Sayısı
19reviews_el = soup.select_one("span#acrCustomerReviewText")
20reviews = reviews_el.get_text(strip=True) if reviews_el else None
21# Uygunluk
22avail_el = soup.select_one("div#availability span")
23availability = avail_el.get_text(strip=True) if avail_el else None
24# Ana Görsel URL'si
25img_el = soup.select_one("#landingImage")
26image_url = img_el.get("src") if img_el else None
27print(f"Başlık: {title}")
28print(f"Fiyat: {price}")
29print(f"Puan: {rating}")
30print(f"Yorumlar: {reviews}")
31print(f"Uygunluk: {availability}")
32print(f"Görsel: {image_url}")

Beklenen çıktı (örnek):

1Başlık: Apple AirPods Pro (2. Nesil) USB-C ile
2Fiyat: $189.99
3Puan: 5 yıldız üzerinden 4.7
4Yorumlar: 98.432 puanlama
5Uygunluk: Stokta Var
6Gö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.

1import time
2import random
3def get_search_asins(keyword, max_pages=1):
4    """Amazon arama sonuçlarından ASIN toplar."""
5    asins = []
6    for page in range(1, max_pages + 1):
7        search_url = f"https://www.amazon.com/s?k={keyword}&page={page}"
8        resp = cfreq.get(search_url, headers=headers, impersonate="chrome124")
9        if resp.status_code != 200:
10            print(f"Arama sayfası {page} {resp.status_code} döndürdü")
11            break
12        search_soup = BeautifulSoup(resp.text, "lxml")
13        results = search_soup.select('div[data-component-type="s-search-result"]')
14        for r in results:
15            asin = r.get("data-asin")
16            if asin:
17                asins.append(asin)
18        print(f"Sayfa {page}: {len(results)} ürün bulundu")
19        time.sleep(random.uniform(2, 5))  # Nazik bekleme
20    return asins
21asins = get_search_asins("wireless+earbuds", max_pages=2)
22print(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:

1import pandas as pd
2def scrape_product(asin):
3    """Tek bir Amazon ürün detay sayfasını kazır."""
4    url = f"https://www.amazon.com/dp/{asin}"
5    try:
6        resp = cfreq.get(url, headers=headers, impersonate="chrome124")
7        if resp.status_code != 200:
8            return None
9        soup = BeautifulSoup(resp.text, "lxml")
10        title_el = soup.select_one("span#productTitle")
11        price_el = (
12            soup.select_one("div#corePriceDisplay_desktop_feature_div span.a-price .a-offscreen")
13            or soup.select_one("span.priceToPay .a-offscreen")
14            or soup.select_one(".apexPriceToPay .a-offscreen")
15        )
16        rating_el = soup.select_one("#acrPopover span.a-icon-alt")
17        reviews_el = soup.select_one("span#acrCustomerReviewText")
18        avail_el = soup.select_one("div#availability span")
19        img_el = soup.select_one("#landingImage")
20        return {
21            "asin": asin,
22            "title": title_el.get_text(strip=True) if title_el else None,
23            "price": price_el.get_text(strip=True) if price_el else None,
24            "rating": rating_el.get_text(strip=True) if rating_el else None,
25            "reviews": reviews_el.get_text(strip=True) if reviews_el else None,
26            "availability": avail_el.get_text(strip=True) if avail_el else None,
27            "image_url": img_el.get("src") if img_el else None,
28            "url": url,
29        }
30    except Exception as e:
31        print(f"{asin} kazınırken hata oluştu: {e}")
32        return None
33# Toplanan tüm ASIN'leri kazı
34products = []
35for i, asin in enumerate(asins):
36    print(f"Kazınıyor {i+1}/{len(asins)}: {asin}")
37    product = scrape_product(asin)
38    if product:
39        products.append(product)
40    time.sleep(random.uniform(2, 5))  # İstekler arasında rastgele gecikme
41df = pd.DataFrame(products)
42print(f"\nBaşarıyla kazınan ürün sayısı: {len(df)}")
43print(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

1df.to_csv("amazon_products.csv", index=False, encoding="utf-8-sig")
2print("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 . 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:

1import random
2USER_AGENTS = [
3    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/143.0.0.0 Safari/537.36",
4    "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",
5    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0",
6    "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",
7]
8def get_headers():
9    return {
10        "User-Agent": random.choice(USER_AGENTS),
11        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
12        "Accept-Language": "en-US,en;q=0.9",
13        "Accept-Encoding": "gzip, deflate, br",
14        "Referer": "https://www.google.com/",
15        "DNT": "1",
16        "Connection": "keep-alive",
17    }

İ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.

1from curl_cffi import requests as cfreq
2# Taklit hedeflerini de döndürün
3BROWSERS = ["chrome120", "chrome124", "chrome131"]
4response = cfreq.get(
5    url,
6    headers=get_headers(),
7    impersonate=random.choice(BROWSERS),
8)

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.

1PROXIES = [
2    "http://user:pass@proxy1.example.com:8080",
3    "http://user:pass@proxy2.example.com:8080",
4    "http://user:pass@proxy3.example.com:8080",
5]
6proxy = random.choice(PROXIES)
7response = cfreq.get(
8    url,
9    headers=get_headers(),
10    impersonate="chrome124",
11    proxies={"http": proxy, "https": proxy},
12)

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 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.

1import time
2import random
3def fetch_with_backoff(url, max_retries=3):
4    """Başarısızlık durumunda üstel geri çekilme ile URL çeker."""
5    for attempt in range(max_retries):
6        response = cfreq.get(
7            url,
8            headers=get_headers(),
9            impersonate=random.choice(BROWSERS),
10        )
11        if response.status_code == 200:
12            return response
13        # Rastgeleleşmiş üstel geri çekilme
14        wait = min(2 ** attempt + random.uniform(0, 1), 30)
15        print(f"Deneme {attempt+1} başarısız ({response.status_code}). {wait:.1f}s bekleniyor...")
16        time.sleep(wait)
17    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:

1from playwright.sync_api import sync_playwright
2def scrape_with_browser(url):
3    with sync_playwright() as p:
4        browser = p.chromium.launch(headless=True)
5        page = browser.new_page()
6        page.goto(url, wait_until="domcontentloaded")
7        page.wait_for_timeout(3000)  # JS'in yüklenmesini bekle
8        html = page.content()
9        browser.close()
10        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. → 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:

1import gspread
2from gspread_dataframe import set_with_dataframe
3gc = gspread.service_account()
4sh = gc.open("Amazon Scrape Data")
5worksheet = sh.sheet1
6set_with_dataframe(worksheet, df)
7print("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:

1import sqlite3
2conn = sqlite3.connect("amazon_products.db")
3df.to_sql("products", conn, if_exists="append", index=False)
4print(f"{len(df)} ürün SQLite'a kaydedildi")
5# Sonradan sorgulama:
6historical = pd.read_sql_query(
7    "SELECT * FROM products WHERE price IS NOT NULL ORDER BY rowid DESC LIMIT 100",
8    conn,
9)

Kodsuz Alternatif

Python dışa aktarma betiklerini sürdürmek istemiyorsanız, 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:

1crontab -e

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

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

Ya da her 6 saatte bir:

10 */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:

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

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:

1name: Amazon Scraper
2on:
3  schedule:
4    - cron: "0 6 * * *"  # Her gün UTC 06:00
5  workflow_dispatch:       # Manuel tetikleme
6jobs:
7  scrape:
8    runs-on: ubuntu-latest
9    steps:
10      - uses: actions/checkout@v3
11      - name: Set up Python
12        uses: actions/setup-python@v4
13        with:
14          python-version: "3.11"
15      - name: Install dependencies
16        run: pip install -r requirements.txt
17      - name: Run scraper
18        run: python scraper.py
19      - name: Commit results
20        run: |
21          git config user.name 'GitHub Actions'
22          git config user.email 'actions@github.com'
23          git add data/
24          git diff --staged --quiet || git commit -m "Kazınan verileri güncelle"
25          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 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. ni 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 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 kararı (2022), herkese açık verilere erişmenin CFAA’yı ihlal etmediğini ortaya koydu. Daha yakın tarihte (2024) ve (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 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, ile Amazon üzerinde kodsuz yaklaşımı hemen test edebilirsiniz.

Daha fazlası için , ve rehberlerimize göz atın. Ayrıca ü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 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 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. 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 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

İçindekiler

Thunderbit’i dene

Lead’leri ve diğer verileri sadece 2 tıkla çek. Yapay zeka destekli.

Thunderbit’i Al Ücretsiz
Yapay zeka ile veri çıkar
Verileri kolayca Google Sheets, Airtable veya Notion’a aktar
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week