Python ile Amazon Yorumları Nasıl Kazınır: 2025 Rehberi

Son güncelleme: August 21, 2026
Python ile Amazon Yorumları Nasıl Kazınır: 2025 Rehberi

Amazon yorum kazıyıcım altı hafta boyunca sorunsuz çalıştı — sonra bir sabah 200 OK döndürdü ve içinde hiçbir şey olmayan bir sayfa geldi. Hata yok, CAPTCHA yok; yüzlerce yorumun bulunduğu yerde şimdi bomboş bir HTML vardı.

Bu sana tanıdık geliyorsa, yalnız değilsin. 2025’in sonlarına doğru Amazon, tam yorum sayfalarını giriş zorunluluğunun arkasına almaya başladı ve birçok Python scraping script’i bir gecede çalışmaz hâle geldi. Son birkaç ayımı Thunderbit ekibinde hem kendi AI scraper’ımızı geliştirerek hem de kişisel Python yorum hattımı ayakta tutmaya çalışarak geçirdim. Bu yüzden, script’im ilk kez bozulduğunda elimde olmasını istediğim rehberi yazmanın zamanı geldiğini düşündüm. Bu yazı, çalışan yöntemi adım adım anlatıyor: çerez tabanlı kimlik doğrulama, Amazon’un CSS karartmasını aşabilen stabil selector’lar, 10 sayfalık sayfalama sınırına karşı pratik çözümler, anti-bot savunmaları ve ham yorum metnini gerçek iş içgörülerine dönüştüren bonus bir duygu analizi bölümü. Eğer ortalara gelince “Bu kodların hepsini ben neden bakımda tutayım ki?” diye düşünürsen, Thunderbit ile aynı işi yaklaşık iki dakikada, Python’a hiç dokunmadan nasıl yaptığımı da göstereceğim.

Amazon Yorum Kazıma Nedir ve Neden Önemlidir?

Amazon yorum kazıma, müşteri yorum verilerini — yıldız puanı, yorum metni, yazar adı, tarih, doğrulanmış satın alma rozeti gibi bilgileri — Amazon ürün sayfalarından programatik olarak çekme işlemidir. Amazon, 2010’da Product Advertising API’sinden yorum içeriğini kaldırdığı ve bir daha geri getirmediği için, bu verilere programlı erişimin tek yolu web scraping’dir.

Rakamlar da bunu destekliyor. Alışveriş yapanların %95’i satın almadan önce yorum okuyor ve şirketlerin %94’ü Amazon’u ürün yorumu için bir numaralı kaynak olarak görüyor. Bir ürün sayfasında yalnızca 5 yorum göstermek dönüşümü %270 artırabiliyor. Yorum duyarlılığını sistematik şekilde analiz eden şirketler müşteri sadakatinde %15’e varan artış görebiliyor. Bu, soyut bir veri bilimi konusu değil; rekabet istihbaratı, ürün iyileştirme sinyalleri ve pazarlama dili, hepsi Amazon’un sunucularında düz metin olarak duruyor.

Neden Amazon Yorumlarını Python ile Kazıyalım?

Python bu iş için hâlâ en çok tercih edilen dil. 2024 Stack Overflow Developer Survey’de en çok istenen #1 dil ve requests, BeautifulSoup, pandas, Scrapy gibi ekosistemi sayesinde, tam zamanlı geliştirici olmayanlar için bile web scraping’i erişilebilir hâle getiriyor.

Farklı ekipler bu veriyi farklı amaçlarla kullanıyor:

EkipKullanım SenaryosuNe Çekerler
Ürün / Ar-GeTekrarlayan şikayetleri belirleme, düzeltmeleri önceliklendirme1–2 yıldız yorum metni, anahtar kelime sıklığı
SatışRakip ürün algısını izlemePuanlar, yorum hacmi trendleri
PazarlamaReklam metni için müşteri dilini toplamaOlumlu yorum ifadeleri, özellik atıfları
E-ticaret OperasyonlarıKendi ürün algısını zaman içinde takip etmeYıldız dağılımı, doğrulanmış satın alma oranı
Pazar AraştırmasıKategori liderlerini özellik bazında karşılaştırmaBirden fazla ASIN içeren yorum veri setleri

Bir mutfak gereçleri markası olumsuz yorumları analiz edip %22’sinde “yapışmaz kaplamanın aşındığı” şikayetini buldu, ürünü yeniden formüle etti ve 60 gün içinde #1 Best Seller konumunu geri aldı. Bir fitness takip cihazı şirketi yorum metinlerinden “bileklik tahrişi” sorununu ortaya çıkardı, latekse alerji sorununu tespit etti, hipoalerjenik bir varyant çıkardı ve iade oranını %40 düşürdü. Mühendislik emeğini değerli kılan ROI tam olarak bu tür bir şeydir.

Giriş Duvarı: Amazon Yorum Kazıyıcınız Neden Çalışmayı Bıraktı?

14 Kasım 2024’te Amazon, tam ürün yorum sayfasını görüntülemek için giriş yapmayı zorunlu kılmaya başladı. Bu değişiklik topluluk forumlarında ve scraping hizmeti bloglarında doğrulandı. /product-reviews/{ASIN}/ adresini gizli modda açarsan, yorum verisi yerine bir giriş sayfasına yönlendirilirsin.

python-web-scraping-diagram.webp

Belirtiler ince olabilir: script’in 200 OK yanıtı alır, ama HTML gövdesinde yorumlar yerine bir giriş formu (name="email", id="ap_password") vardır. Hata kodu yok. CAPTCHA yok. Sadece... işe yarar hiçbir şey yok.

Amazon bunu anti-bot ve bölgesel uyumluluk nedenleriyle yaptı. Uygulama zaman zaman tutarsız olabiliyor — bazen yeni açılmış bir tarayıcı penceresi, özellikle ilk sayfada, duvar devreye girmeden önce birkaç yorumu yükleyebiliyor — ancak ölçekli çalışan her scraper için duvarın her zaman aktif olduğunu varsaymalısın.

Farklı Amazon ülke alan adları (.de, .co.uk, .co.jp) bu duvarı birbirinden bağımsız olarak uygular. Bir forum kullanıcısının dediği gibi: “Her ülke için ayrı giriş gerekiyor.” .com çerezlerin .co.uk üzerinde işe yaramaz.

Öne Çıkan Yorumlar vs. Tüm Yorumlar: Giriş Yapmadan Neye Erişebilirsiniz?

Amazon ürün sayfaları (/dp/{ASIN}/ URL’si) hâlâ kimlik doğrulaması olmadan yaklaşık 8 “öne çıkan yorum” gösteriyor. Bunlar Amazon algoritmasının seçtiği yorumlardır ve hızlı bir duygu kontrolü için faydalıdır; ancak sıralanamaz, filtrelenemez veya sayfalanamaz.

Tam yorum sayfaları (/product-reviews/{ASIN}/) — en yeniye göre sıralama, yıldız puanına göre filtreleme ve yüzlerce yorum arasında sayfalama — giriş gerektirir.

Eğer hızlı bir nabız kontrolü için yalnızca birkaç yoruma ihtiyacın varsa, ürün sayfasını kazı. Yüzlerce hatta binlerce yorum gerekiyorsa, kimlik doğrulamayı çözmen gerekir.

Başlamadan Önce Gerekli Olanlar: Python Kurulumu ve Kütüphaneler

Kod yazmadan önce kurulum şu şekilde:

  • Zorluk seviyesi: Orta (Python’a aşina, temel HTML bilgisi)
  • Gereken süre: Tüm hat için yaklaşık 45 dakika; temel bir kazıma için yaklaşık 10 dakika
  • İhtiyacın olacaklar: Python 3.8+, Chrome tarayıcı, geçerli bir Amazon hesabı

Temel kütüphaneleri yükle:

pip install requests beautifulsoup4 lxml pandas textblob

İsteğe bağlı (ileri seviye duygu analizi için):

pip install transformers torch

ASIN nedir? Amazon’un 10 karakterlik ürün kimliğidir. Bunu herhangi bir ürün URL’sinde bulabilirsin — örneğin amazon.com/dp/B0BCNKKZ91 içinde ASIN B0BCNKKZ91’dir. Yorum URL’sine ekleyeceğin anahtar budur.

Adım 1: Çerez Tabanlı Kimlik Doğrulama ile Giriş Duvarını Aşın

En güvenilir yöntem, Amazon’a tarayıcında giriş yapmak, oturum çerezlerini kopyalamak ve bunları Python requests.Session() içine enjekte etmektir. Böylece Selenium tabanlı giriş otomasyonunda sık görülen CAPTCHA ve SMS 2FA tetiklenmez.

Şu yedi çereze ihtiyacın var:

Çerez AdıAmaç
session-idDönen oturum kimliği
session-id-timeOturum zaman damgası
session-tokenDönen oturum belirteci
ubid-mainKullanıcı gezinme kimliği
at-mainBirincil kimlik doğrulama belirteci
sess-at-mainOturuma özel kimlik doğrulama
x-mainE-posta ile anahtarlanan tanımlayıcı

Chrome DevTools’tan Çerezler Nasıl Çıkarılır?

  1. Chrome’da amazon.com hesabına giriş yap
  2. DevTools’u aç (F12 ya da sağ tık → İncele)
  3. ApplicationStorageCookieshttps://www.amazon.com yolunu izle
  4. Tablodaki her çerez adını bul ve değerini kopyala
  5. Bunları Python için noktalı virgülle ayrılmış bir dize olarak biçimlendir

Oturumunu şöyle kur:

import requests

session = requests.Session()

# Çerez değerlerini buraya yapıştır
cookies = {
    "session-id": "YOUR_SESSION_ID",
    "session-id-time": "YOUR_SESSION_ID_TIME",
    "session-token": "YOUR_SESSION_TOKEN",
    "ubid-main": "YOUR_UBID_MAIN",
    "at-main": "YOUR_AT_MAIN",
    "sess-at-main": "YOUR_SESS_AT_MAIN",
    "x-main": "YOUR_X_MAIN",
}

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/147.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
    "Accept-Language": "en-US,en;q=0.5",
}

session.cookies.update(cookies)
session.headers.update(headers)

Önemli: Tüm isteklerinde aynı session nesnesini yeniden kullan. Bu, çerezlerin tutarlı kalmasını sağlar ve gerçek bir tarayıcı oturumunu taklit eder. Çerezler genellikle scraping yükü altında günler ile haftalar arasında geçerlidir; ancak yeniden giriş sayfasına düşmeye başlarsan, bunları tarayıcından yenile.

.com dışındaki pazar yerlerinde çerez adları biraz değişir — amazon.de at-main yerine at-acbde, amazon.co.uk ise at-acbuk kullanır ve benzeri. Her pazar yeri için ayrı ve bağımsız oturum gerekir.

Adım 2: İsteği Oluşturun ve Yorum HTML’ini BeautifulSoup ile Ayrıştırın

Amazon yorum URL’si şu yapıyı izler:

https://www.amazon.com/product-reviews/{ASIN}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber=1

Temel fonksiyon:

from bs4 import BeautifulSoup
import time, random

def get_soup(session, url):
    time.sleep(random.uniform(2, 5))  # Nazik gecikme
    response = session.get(url, timeout=15)

    # Giriş duvarını tespit et
    if "ap_email" in response.text or "Amazon Sign-In" in response.text:
        raise Exception("Giriş duvarı tespit edildi — çerezlerini yenile")

    if response.status_code != 200:
        raise Exception(f"HTTP {response.status_code}")

    return BeautifulSoup(response.text, "lxml")

İşe yarayan küçük bir hile: yorum sayfasına geçmeden önce önce ürün sayfasını ziyaret et. Bu, oturumunda doğal bir gezinme davranışı oluşturur.

# Önce ürün sayfasını ziyaret et (gerçek gezinmeyi taklit eder)
product_url = f"https://www.amazon.com/dp/{asin}"
session.get(product_url, timeout=15)
time.sleep(random.uniform(1, 3))

# Sonra yorum sayfasına git
reviews_url = f"https://www.amazon.com/product-reviews/{asin}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber=1"
soup = get_soup(session, reviews_url)

Adım 3: Yorum Verisini Çıkarmak İçin Stabil Selector’lar Kullanın (CSS Sınıflarına Güvenmeyi Bırakın)

2022–2023 arasındaki çoğu rehberin dağıldığı yer tam da burası. Amazon CSS sınıf adlarını belirsizleştirir — bunlar periyodik olarak değişir ve bir forumda sinirlenen bir geliştiricinin dediği gibi: “span etiketlerinin sınıf adları için tek bir kalıp yoktu.”

Çözüm şu: Amazon, yorum öğelerinde data-hook özniteliklerini kullanır ve bunlar şaşırtıcı derecede stabildir. Bunlar Amazon’un kendi ön yüz kodunun dayandığı anlamsal tanımlayıcılardır, bu yüzden rastgeleleştirilmezler.

Yorum AlanıStabil Selector (data-hook)Kırılgan Selector (class)
Yorum metni[data-hook="review-body"].review-text-content (değişir)
Yıldız puanı[data-hook="review-star-rating"].a-icon-alt (belirsiz)
Yorum başlığı[data-hook="review-title"].review-title (bazen)
Yazar adıspan.a-profile-nameGörece stabil
Yorum tarihi[data-hook="review-date"].review-date (bölgeye bağlı)
Doğrulanmış satın alma[data-hook="avp-badge"]span.a-size-mini

data-hook selector’larıyla çıkarım kodu:

import re

def extract_reviews(soup):
    reviews = []
    review_divs = soup.select('[data-hook="review"]')

    for div in review_divs:
        # Yıldız puanı
        rating_el = div.select_one('[data-hook="review-star-rating"]')
        rating = None
        if rating_el:
            rating_text = rating_el.get_text(strip=True)
            match = re.search(r'(\d\.?\d?)', rating_text)
            if match:
                rating = float(match.group(1))

        # Başlık
        title_el = div.select_one('[data-hook="review-title"]')
        title = title_el.get_text(strip=True) if title_el else ""

        # Gövde
        body_el = div.select_one('[data-hook="review-body"]')
        body = body_el.get_text(strip=True) if body_el else ""

        # Yazar
        author_el = div.select_one('span.a-profile-name')
        author = author_el.get_text(strip=True) if author_el else ""

        # Tarih ve ülke
        date_el = div.select_one('[data-hook="review-date"]')
        date_text = date_el.get_text(strip=True) if date_el else ""
        # Biçim: "Reviewed in the United States on January 15, 2025"
        country_match = re.search(r'Reviewed in (.+?) on', date_text)
        date_match = re.search(r'on (.+)$', date_text)
        country = country_match.group(1) if country_match else ""
        date = date_match.group(1) if date_match else ""

        # Doğrulanmış satın alma
        verified_el = div.select_one('[data-hook="avp-badge"]')
        verified = bool(verified_el)

        reviews.append({
            "author": author,
            "rating": rating,
            "title": title,
            "content": body,
            "date": date,
            "country": country,
            "verified": verified,
        })

    return reviews

Bu selector setini aylardır birden fazla ASIN üzerinde çalıştırıyorum ve data-hook öznitelikleri bir kez bile değişmedi. CSS sınıfları ise aynı dönemde en az iki kez değişti.

Adım 4: Sayfalama ve Amazon’un 10 Sayfalık Sınırını Yönetin

Amazon, pageNumber parametresini her biri 10 yorum içeren 10 sayfa ile sınırlar — bu, filtre kombinasyonu başına yaklaşık 100 yorumluk sert bir tavan demektir. “Sonraki sayfa” düğmesi 10. sayfadan sonra kaybolur.

Temel sayfalama döngüsü:

all_reviews = []

for page in range(1, 11):
    url = f"https://www.amazon.com/product-reviews/{asin}/ref=cm_cr_arp_d_viewopt_srt?sortBy=recent&pageNumber={page}"
    soup = get_soup(session, url)
    page_reviews = extract_reviews(soup)

    if not page_reviews:
        break  # Bu sayfada artık yorum kalmadı

    all_reviews.extend(page_reviews)
    print(f"Sayfa {page}: {len(page_reviews)} yorum")

Amazon’da 10 Sayfadan Fazla Yoruma Nasıl Ulaşılır?

Çözüm, filtre bölümlendirmesidir. Her filterByStar ve sortBy kombinasyonu kendi 10 sayfalık bağımsız penceresine sahiptir.

Yıldız filtresi değerleri: one_star, two_star, three_star, four_star, five_star
Sıralama değerleri: recent, helpful (varsayılan)

5 yıldız filtresi × 2 sıralama düzenini birleştirerek ürün başına 100 sayfaya, yani 1.000 yoruma kadar erişebilirsin — ayrıca yıldız dağılımı dengesiz olan ürünlerde genellikle tam yorum setine oldukça yaklaşılır.

star_filters = ["one_star", "two_star", "three_star", "four_star", "five_star"]
sort_orders = ["recent", "helpful"]
all_reviews = []
seen_titles = set()  # Basit tekrar önleme

for star in star_filters:
    for sort in sort_orders:
        for page in range(1, 11):
            url = (
                f"https://www.amazon.com/product-reviews/{asin}"
                f"?filterByStar={star}&sortBy={sort}&pageNumber={page}"
            )
            soup = get_soup(session, url)
            page_reviews = extract_reviews(soup)

            if not page_reviews:
                break

            for review in page_reviews:
                # Başlık + yazar kombinasyonuna göre tekrarları ayıkla
                key = (review["title"], review["author"])
                if key not in seen_titles:
                    seen_titles.add(key)
                    all_reviews.append(review)

            print(f"[{star}/{sort}] Sayfa {page}: {len(page_reviews)} yorum")

print(f"Toplam benzersiz yorum sayısı: {len(all_reviews)}")

Bu bölümler arasında örtüşme olacaktır, bu yüzden tekrarları ayıklamak şarttır. Hızlı bir anahtar olarak yorum başlığı + yazar adı kombinasyonunu kullanıyorum — mükemmel değil ama tekrarların büyük çoğunluğunu yakalıyor.

Adım 5: Anti-Bot Savunmalarını Atlatın (Döndür, Yavaşlat, Tekrar Dene)

Amazon, AWS WAF Bot Control kullanıyor ve bu sistem ciddi biçimde sertleşti. Tek katmanlı önlemler (sadece User-Agent döndürmek, sadece gecikme eklemek gibi) artık yeterli değil.

TeknikUygulama
Dönen User-Agent’lar10+ gerçek tarayıcı dizesi arasından rastgele seçim
Üstel geri çekilme503 durumlarında 2 sn → 4 sn → 8 sn yeniden deneme
İstek hız sınırıSayfalar arasında random.uniform(2, 5) saniye
Proxy dönüşümüResidential proxy’ler arasında döngü
Oturum parmak iziHer oturum için tutarlı çerezler + başlıklar
TLS taklidiÜretimde stok requests yerine curl_cffi kullanın

Üretime uygun bir tekrar deneme sarmalayıcısı:

import time, random

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

def scrape_with_retries(session, url, max_retries=3):
    for attempt in range(max_retries):
        try:
            session.headers["User-Agent"] = random.choice(USER_AGENTS)
            time.sleep(random.uniform(2, 5))

            response = session.get(url, timeout=15)

            # Engelleri tespit et
            if "validateCaptcha" in response.url or "Robot Check" in response.text:
                wait = (2 ** attempt) * 5
                print(f"CAPTCHA tespit edildi. {wait}s bekleniyor...")
                time.sleep(wait)
                continue

            if response.status_code in (429, 503):
                wait = (2 ** attempt) * 2
                print(f"Hız sınırına takıldı ({response.status_code}). {wait}s bekleniyor...")
                time.sleep(wait)
                continue

            if "ap_email" in response.text:
                raise Exception("Giriş duvarı — çerezlerin süresi dolmuş")

            return BeautifulSoup(response.text, "lxml")

        except Exception as e:
            if attempt == max_retries - 1:
                raise
            print(f"Deneme {attempt + 1} başarısız: {e}")

    return None

Proxy’ler hakkında bir not: Amazon, bilinen veri merkezi IP aralıklarını (AWS, GCP, Azure, DigitalOcean) ağ seviyesinde kara listeye alır. Birkaç yüz sayfadan fazla scraping yapıyorsan, residential proxy’ler pratikte zorunludur — hacme bağlı olarak ayda 50–200+ dolar harcamayı bekle. Daha küçük projelerde (günde 100 isteğin altında), ev IP’nden dikkatli hız sınırlaması çoğu zaman yeterli olur.

Amazon ayrıca TLS parmak izlerini de inceler. Python’un standart requests kütüphanesi, WAF’ler tarafından önceden engellenen iyi bilinen bir JA3 hash’ine sahiptir. Üretim scraper’ları için gerçek tarayıcı TLS yığınlarını taklit eden curl_cffi’yi düşün. Eğitim düzeyinde scraping için (birkaç yüz sayfa), iyi başlıklarla birlikte requests genellikle yeterlidir.

Adım 6: Kazıdığınız Amazon Yorumlarını CSV veya Excel’e Aktarın

Yorumları topladıktan sonra, pandas ile bunları kullanılabilir bir formata dönüştürmek çok kolaydır:

import pandas as pd

df = pd.DataFrame(all_reviews)
df.to_csv("amazon_reviews.csv", index=False)
print(f"{len(df)} yorum amazon_reviews.csv dosyasına aktarıldı")

Örnek çıktı:

authorratingtitlecontentdatecountryverified
Sarah M.5.0Bu yılın en iyi alışverişiPil bütün gün dayanıyor, ekran çok güzel...January 15, 2025the United StatesTrue
Mike T.2.02 hafta sonra hayal kırıklığıŞarj portu çalışmayı durdurdu...February 3, 2025the United StatesTrue
Priya K.4.0Fiyatına göre harikaİhtiyacım olan her şeyi yapıyor, ağır uygulamalarda hafif gecikme var...March 10, 2025the United StatesFalse

Excel’e aktarmak için: df.to_excel("amazon_reviews.xlsx", index=False) (openpyxl gerekir).

Google Sheets için gspread kütüphanesi çalışır ama 8+ adımlık Google Cloud yapılandırması ister — proje oluşturma, iki API’yi etkinleştirme, servis hesabı kimlik bilgileri üretme, sayfayı paylaşma. Bu kurulum sana gerçek scraping’den daha karmaşık geliyorsa, yanılmıyorsun. (Thunderbit gibi bir aracın Google Sheets’e tek tıkla aktarma sunması tam da bu noktada çok cazip görünmeye başlıyor.)

Bonus: Kazıdığınız Yorumlara 5 Satır Python ile Duygu Analizi Ekleyin

Çoğu scraping rehberi CSV aktarımında durur. Oysa duygu puanlama, ham veriyi iş kararlarına dönüştüren kısımdır.

En hızlı temel yaklaşım TextBlob kullanmaktır:

from textblob import TextBlob

df["sentiment"] = df["content"].apply(lambda x: TextBlob(str(x)).sentiment.polarity)

Bu, her yorum için -1.0 (çok negatif) ile +1.0 (çok pozitif) arasında bir polarite skoru verir. Örnek çıktı:

| content (kısaltılmış) | rating | sentiment | |---|---|---|---| | "Pil bütün gün dayanıyor, ekran çok güzel..." | 5.0 | 0.65 | | "Şarj portu birkaç gün sonra çalışmayı durdurdu..." | 2.0 | -0.40 | | "İhtiyacım olan her şeyi yapıyor, hafif gecikme var..." | 4.0 | 0.25 | | "Tam bir çöp. Hemen iade ettim." | 1.0 | -0.75 | | "Fena değil. Özel bir yanı yok ama çalışıyor." | 3.0 | 0.10 |

İlginç olan satırlar uyumsuzluklardır — pozitif dil içeren 3 yıldızlı bir yorum ya da negatif dil içeren 5 yıldızlı bir yorum gibi. Bu farklar, yalnızca yıldız puanlarının kaçırdığı nüanslı müşteri görüşlerini sık sık ortaya çıkarır.

ai-review-analysis.webp

Üretim düzeyinde doğruluk için önerilen yaklaşım Hugging Face Transformers’tır. VADER tweet’ler üzerinde eğitildi, ürün yorumları üzerinde değil ve transformer modelleri yorum sınıflandırmada %98’in üzerinde doğruluk elde edebiliyor; bu da sözlük tabanlı araçlardan çok daha iyi. nlptown/bert-base-multilingual-uncased-sentiment modeli 1–5 yıldız derecelendirmesini doğrudan tahmin edebiliyor:

from transformers import pipeline

clf = pipeline("sentiment-analysis",
               model="nlptown/bert-base-multilingual-uncased-sentiment")
df["predicted_stars"] = df["content"].apply(
    lambda x: int(clf(str(x)[:512])[0]["label"][0])
)

Amazon yorumları J şeklinde bir dağılım gösterir — 5 yıldızda büyük bir zirve, 1 yıldızda daha küçük bir zirve ve ortada bir çukur. Bu yüzden ortalama yıldız puanı çoğu zaman gerçek ürün kalitesinin zayıf bir göstergesidir. 1 yıldız kümesini segmentlere ayır ve tekrar eden temaları çıkar — genellikle tek bir düzeltilebilir kusur orada saklıdır.

Dürüst Karşılaştırma: Kendin Yap Python vs. Ücretli Scraping API’leri vs. Thunderbit

Amazon için Python scraper’ları yönettim ve dürüst olayım: bozuluyorlar. Selector’lar değişiyor, çerezlerin süresi doluyor, Amazon yeni bir bot algılama katmanı yayımlıyor ve birden bire cumartesi sabahın veri analiz etmek yerine scraper debug etmeye gidiyor. Forum kullanıcıları da aynı hayal kırıklığını yaşıyor — “geçen ay çalışan” DIY script’ler şimdi sürekli yama istiyor.

Üç ana yaklaşımın karşılaştırması şöyle:

KriterKendin Yap Python (BS4/Selenium)Ücretli Scraping APIThunderbit (Kod Yazmadan)
Kurulum süresi1–3 saat30 dk (API anahtarı)2 dakika
MaliyetÜcretsiz (+ proxy maliyeti)Ayda 50–200+ dolarÜcretsiz plan mevcut
Giriş duvarı yönetimiManuel çerez yönetimiGenellikle ele alınırOtomatik yönetilir
BakımYüksek (selector’lar bozulur)Düşük (sağlayıcı bakım yapar)Sıfır (AI uyum sağlar)
SayfalamaÖzel kod gerekirDahiliDahili
Çok ülkeli destekAlan adı başına ayrı oturumGenellikle desteklenirTarayıcı tabanlı = yerel bölgen
Duygu analiziKendi kodunu eklemen gerekirBazen dahilSheets’e aktar, istediğin yerde analiz et
En uygun kullanımÖğrenme, tam kontrolÖlçekli/üretim hatlarıHızlı veri çekme, geliştirici olmayan ekipler

Python sana tam kontrol sağlar ve web scraping’in kaput altında nasıl çalıştığını öğrenmenin gerçekten en iyi yoludur. Ücretli API’ler (ScrapingBee, Oxylabs, Bright Data) çalışma süresinin maliyetten daha önemli olduğu üretim hatları için anlamlıdır. Ve geliştirme yükü olmadan yorum verisine ihtiyaç duyan ekipler için — rakip ürünlerini haftalık izleyen e-ticaret operasyonları, reklam metni için müşteri dili toplayan pazarlama ekipleri gibi — üçüncü bir yol daha var.

Thunderbit ile Amazon Yorumları Nasıl Kazınır? (Kodsuz, Bakımsız)

Thunderbit tam da Python scraper bakımının aşırı zahmetli geldiği senaryolar için tasarlandı. İş akışı şöyle:

  1. Thunderbit Chrome Eklentisini yükle
  2. Tarayıcında Amazon ürün yorum sayfasına git (zaten giriş yapmış olacaksın, yani giriş duvarı sorun olmaz)
  3. “AI Suggest Fields”’a tıkla — Thunderbit sayfayı okur ve Author, Rating, Title, Review Text, Date, Verified Purchase gibi sütunlar önerir
  4. “Scrape”’e tıkla — veri, yerleşik sayfalama ile anında çekilir
  5. Excel, Google Sheets, Airtable veya Notion’a dışa aktar

Buradaki en büyük avantaj, Thunderbit’in AI’sinin sayfa yapısını her seferinde yeniden okumasıdır. Bakım gerektiren CSS selector’ları yok, çerez yönetimi yok, anti-bot kodu yok. Amazon HTML’ini değiştirdiğinde AI uyum sağlar. Programatik erişim isteyen ama tam DIY yapmak istemeyen okuyucular için Thunderbit ayrıca bir Extract API de sunar — AI destekli alan tespitiyle yapılandırılmış veri çıkarımı, selector bakımı olmadan.

Amazon verisi hakkında daha derin incelemeler için Amazon ürün ve yorumlarını nasıl kazıyacağınıza ve Amazon satış verilerini çıkarıp analiz etmeye dair rehberlerimize göz atın.

Python ile Ölçekte Amazon Yorumları Kazımak İçin İpuçları

Birden fazla ASIN boyunca yorum kazıyorsan, birkaç uygulama seni ciddi baş ağrısından kurtarır:

  • ASIN’leri toplu işleyin ve ürünler arasında gecikme koyun (yalnızca sayfalar arasında değil). Ben ASIN’ler arasında 10–15 saniyelik duraklamalar kullanıyorum.
  • Tekrarları agresif biçimde ayıklayın. Birden fazla yıldız filtresi ve sıralama kombinasyonunu birleştirirken örtüşen yorumlar alırsın. (title, author, date) demetlerini tekrar önleme anahtarı olarak kullan.
  • Başarısızlıkları kaydet. Hangi ASIN + sayfa + filtre kombinasyonlarının başarısız olduğunu izle; böylece her şeyi yeniden kazımadan sadece onları yeniden deneyebilirsin.
  • Büyük projelerde veriyi veritabanında sakla. Basit bir SQLite veritabanı, büyüyen CSV dosyalarına göre çok daha ölçeklenebilirdir:
import sqlite3

conn = sqlite3.connect("reviews.db")
df.to_sql("reviews", conn, if_exists="append", index=False)
  • Tekrarlayan kazımaları planla. Sürekli izleme için bir cron job kur veya Thunderbit’in Scheduled Scraper özelliğini kullan — URL’yi ve zamanlamayı tanımla, gerisini sunucuya ihtiyaç duymadan o halleder.

Ek yaklaşımlar için en iyi otomatik web scraping araçları ve web sitelerinden Excel’e veri çekme yazılarımız ek seçenekleri anlatıyor.

Hukuki ve Etik Hususlara Kısa Bir Not

Amazon’un Kullanım Koşulları, Amazon hizmetlerine erişmek için “herhangi bir robot, spider, scraper veya başka otomatik yöntem” kullanımını açıkça yasaklıyor. Bununla birlikte, son ABD içtihatları kamu verisini kazıyanlar açısından olumlu oldu. Meta Platforms v. Bright Data (Ocak 2024) davasında federal mahkeme, genel erişime açık verinin kazınmasının, scraper giriş yapmış bir “kullanıcı” değilse, hizmet şartlarını ihlal etmediğine hükmetti.

Buradaki ince nokta şu: giriş arkasındaki scraping (bu rehberin kapsadığı şey) seni sözleşme hukuku alanına taşır; çünkü hesabını oluştururken Amazon’un ToS’unu kabul etmiş olursun. Kamuya açık öne çıkan yorumları kazımak, giriş duvarının arkasındaki veriyi kazımaktan daha düşük hukuki risk taşır.

Pratik yönergeler: kazınan veriyi ticari olarak yeniden dağıtma, kamuya açık olandan öte kişisel kullanıcı verilerini çekme, robots.txt’ye saygı göster ve büyük ölçekli ya da ticari kullanım için hukuk danışmanına başvur. Bu hukuki tavsiye değildir. Hukuki çerçeve hakkında daha fazla bilgi için web scraping’in hukuki etkileri genel bakışımıza göz at.

Sonuç: Amazon Yorumlarını Python ile Kazıyın ya da Kodu Tamamen Atlayın

Bu rehberde neler anlattığımızın kısa özeti:

  • Giriş duvarı gerçek, ama çerez tabanlı kimlik doğrulama ile aşılabilir — tarayıcından 7 çerezi kopyalayıp requests.Session() içine ekle
  • İki haftada bir bozulmayan çıkarım için CSS sınıfları yerine data-hook selector’larını kullan
  • 10 sayfalık sayfalama sınırını aşmak ve ürün başına 500+ yoruma erişmek için yıldız filtrelerini ve sıralama düzenlerini birleştir
  • Hızlı bir temel için TextBlob ile, üretim doğruluğu için Hugging Face Transformers ile duygu analizi ekle
  • Anti-bot savunmalarını sürdür: hız sınırlama, User-Agent dönüşümü, üstel geri çekilme ve ölçek için residential proxy’ler

Python sana tam kontrol verir ve kaput altında ne olduğunu anlamanın en iyi yoludur. Ama kullanım senaryon “Cuma gününe kadar rakip yorum verisine bir tablo içinde ihtiyacım var” ise, “üretim veri hattı kurmak istiyorum” değilse, özel bir scraper’ın bakım yükü buna değmeyebilir.

Thunderbit, kimlik doğrulama, selector’lar, sayfalama ve dışa aktarmayı tek tıklarla halleder — ücretsiz planı dene ve iş akışına uyup uymadığına bak. Amazon anti-bot önlemlerini giderek sıkılaştırdıkça, gerçek zamanlı uyum sağlayan AI destekli araçlar artık hoş bir ekstra değil, zorunluluk hâline gelecek.

Ayrıca scraping iş akışlarının video anlatımları için Thunderbit YouTube Kanalı sayfamızı da inceleyebilirsin.

SSS

1. Giriş yapmadan Amazon yorumları kazınabilir mi?

Evet, ancak yalnızca ürün detay sayfasında (/dp/{ASIN}/) görünen yaklaşık 8 “öne çıkan yorum” için. Sıralama, filtreleme ve sayfalama içeren tam yorum sayfaları, 2024 sonu itibarıyla kimlik doğrulaması gerektiriyor. Çoğu iş senaryosunda giriş duvarını aşman gerekir.

2. Amazon yorumlarını kazımak yasal mı?

Amazon’un Hizmet Şartları otomatik kazımayı yasaklar. Ancak son ABD içtihatları (Meta v. Bright Data, 2024; hiQ v. LinkedIn) genel erişime açık verinin kazınmasını destekliyor. Giriş arkasındaki scraping daha yüksek hukuki risk taşır çünkü Amazon’un ToS’unu kabul etmiş olursun. Ticari kullanım için hukuk danışmanına başvur.

3. Ürün başına kaç Amazon yorumu kazıyabilirim?

Amazon, her sıralama düzeni ve yıldız filtresi kombinasyonu için yorum sayfalarını 10 ile sınırlar. 5 yıldız filtresinin tamamını × 2 sıralama düzenini kullanarak ürün başına 100 sayfaya kadar (yaklaşık 1.000 yorum) erişebilirsin. Anahtar kelime filtreleriyle teorik tavan çok daha yüksektir, ancak tekrar miktarı da önemli ölçüde artar.

4. Amazon yorumlarını kazımak için en iyi Python kütüphanesi hangisidir?

Statik HTML ayrıştırma için requests + BeautifulSoup en yaygın ve güvenilir kombinasyondur. JavaScript render gerektiğinde Selenium faydalıdır. Giriş duvarlarını ve sayfalama işlemini otomatik yöneten kodsuz bir alternatif için Thunderbit dene.

5. Amazon kazıma sırasında nasıl engellenmem?

10+ gerçek tarayıcı dizesinden User-Agent döndür, istekler arasında 2–5 saniye rastgele gecikme ekle, 503/429 hatalarında üstel geri çekilme uygula, ölçek için residential proxy’ler kullan (veri merkezi IP’leri önceden kara listeye alınır) ve istekler arasında tutarlı oturum çerezleri koru. Sıfır bakım isteyen bir yaklaşım için Thunderbit, anti-bot savunmalarını tarayıcı oturumun üzerinden otomatik olarak yönetir.

Daha Fazla Bilgi

Fawad Khan
Fawad Khan
Fawad geçimini yazı yazarak sağlıyor ve açıkçası bunu seviyor da. Yıllarını, bir reklam metninin akılda kalmasını sağlayan şeyleri ve okuyucuların neden onu hızla geçip gittiğini anlamaya harcadı. Ona pazarlamayı sorun, saatlerce konuşur. Ona carbonara’yı sorun, daha da uzun konuşur.
İç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