Kendinizi, Amazon'un geniş ve gizemli diyarına (yağmur ormanlarına değil, çevrimiçi perakende devi) balıklama atlayan maceracı bir kaşif olarak hayal edin. Her tıklamayla paha biçilmez hazineleri ortaya çıkarır, verilerin keşfedilmemiş topraklarının derinliklerine inersiniz.

Bu heyecan verici keşif gezisinde, Amazon web kazımanın yoğun, dijital ormanında gezinmek için adım adım bir kılavuz sunuyoruz. Değerli bilgileri benzersiz bir hassasiyetle elde etmek için uzman ipuçları ve püf noktaları ile donanmış, eşi benzeri olmayan bir yolculuğa çıkmaya hazırlanın.

İçindekiler

O halde cesaretinizi toplayın, sanal botlarınızı giyin ve veri odaklı maceramıza birlikte başlayalım!

Amazon'dan Hangi Veriler Alınacak?

Bir Amazon ürünüyle ilişkili çok sayıda veri noktası vardır ancak kazıma sırasında odaklanılması gereken temel unsurlar şunlardır:

  1. ürün başlığı
  2. Maliyet
  3. Tasarruf (varsa)
  4. Ürün Özeti
  5. İlgili özellik listesi (varsa)
  6. Puanı inceleyin
  7. Ürün görselleri

Bunlar bir Amazon öğesini tararken dikkate alınması gereken temel hususlar olsa da, çıkardığınız bilgilerin özel hedeflerinize bağlı olarak değişebileceğini unutmamak önemlidir.

Bazı Temel Gereksinimler

Çorba hazırlamak için doğru malzemelere ihtiyacımız var. Benzer şekilde, yeni web kazıyıcımız da belirli bileşenler gerektirir.

  • Python — Kullanıcı dostu olması ve kapsamlı kütüphane koleksiyonu Python'u web kazıma için en iyi tercih haline getirir. Zaten kurulu değilse, bu kılavuza bakın.
  • BeautifulSoup — Bu, Python için mevcut birçok web kazıma kütüphanesinden biridir. Basitliği ve temiz kullanımı onu web kazıma için popüler bir seçim haline getiriyor. Python'u başarıyla yükledikten sonra Beautiful Soup'u aşağıdaki komutu çalıştırarak yükleyebilirsiniz: pip install bs4
  • HTML Etiketlerinin Temel Anlaşılması — HTML etiketleri hakkında gerekli bilgiyi edinmek için bu eğitime başvurun.
  • İnternet tarayıcısı — Bir web sitesinden pek çok alakasız bilgiyi filtrelememiz gerektiğinden, filtreleme amacıyla belirli kimlikler ve etiketler gerekir. Bu etiketleri tanımlamak için Google Chrome veya Mozilla Firefox gibi bir web tarayıcısı kullanışlıdır.

Kazıma için Kurulum

Başlamak için Python'un yüklü olduğundan emin olun. Python 3.8 veya üzeri sürümünüz yoksa, en son sürümü indirmek ve yüklemek için python.org adresini ziyaret edin.

Sonra, Amazon için web kazıma kod dosyalarınızı depolamak üzere bir dizin oluşturun. Projeniz için sanal bir ortam kurmak genellikle iyi bir fikirdir.

MacOS ve Linux'ta sanal bir ortam oluşturmak ve etkinleştirmek için aşağıdaki komutları kullanın:

$ python3 -m venv .env 

$ source .env/bin/activate

Windows kullanıcıları için komutlar biraz farklı olacaktır:

d:amazon>python -m venv .env 

d:amazon>.envscriptsactivate

Şimdi gerekli Python paketlerini kurmanın zamanı geldi.

İki temel görev için paketlere ihtiyacınız olacak: HTML'yi elde etmek ve ilgili verileri çıkarmak için ayrıştırmak.

İstek kitaplığı, HTTP istekleri yapmak için yaygın olarak kullanılan bir üçüncü taraf Python kitaplığıdır. Web sunucularına HTTP istekleri yapmak ve yanıtları almak için basit ve kullanıcı dostu bir arayüz sunar. Belki de web kazıma için en bilinen kütüphanedir.

Bununla birlikte, İstekler kitaplığının bir sınırlaması vardır: HTML yanıtını bir dize olarak döndürür; bu, web kazıma kodu yazarken fiyatları listelemek gibi belirli öğeleri aramak zor olabilir.

Beautiful Soup tam da burada devreye giriyor. Beautiful Soup, HTML ve XML dosyalarından veri çıkaran web kazıma için tasarlanmış bir Python kütüphanesidir. Etiketleri, nitelikleri veya belirli metinleri arayarak bir web sayfasından bilgi almanızı sağlar.

Her iki kütüphaneyi de kurmak için aşağıdaki komutu kullanın:

$ python3 -m pip install requests beautifulsoup4

Windows kullanıcıları için, komutun geri kalanını aynı tutarak 'python3' ifadesini 'python' ile değiştirin:

d:amazon>python -m pip install requests beautifulsoup4

Beautiful Soup kütüphanesinin 4. versiyonunu yüklediğimizi belirtelim.

Şimdi Requests kazıma kütüphanesini test edelim. amazon.py adında yeni bir dosya oluşturup aşağıdaki kodu girelim:

import requests 

url = 'https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L'

response = requests.get(url)

print(response.text)

Dosyayı kaydedin ve terminalden çalıştırın.

$ python3 amazon.py

Çoğu durumda, istediğiniz HTML'yi görüntüleyemezsiniz. Amazon isteği engelleyecek ve aşağıdaki yanıtı alacaksınız:

To discuss automated access to Amazon data please contact [email protected].

Response.status_code'u yazdırırsanız 200 başarı kodu yerine 503 hatası aldığınızı göreceksiniz.

Amazon bu isteğin bir tarayıcıdan gelmediğini bilir ve engeller. Bu uygulama birçok web sitesinde yaygındır. Amazon isteklerinizi engelleyebilir ve 500 veya bazen 400 ile başlayan bir hata kodu döndürebilir.

Basit bir çözüm, isteğinizle birlikte bir tarayıcı tarafından gönderilenleri taklit eden başlıklar göndermektir.

Bazen yalnızca kullanıcı aracısını göndermek yeterlidir. Diğer zamanlarda, kabul edilen dil başlığı gibi ek başlıklar göndermeniz gerekebilir.

Tarayıcınız tarafından gönderilen kullanıcı aracısını bulmak için F12 tuşuna basın, Ağ sekmesini açın ve sayfayı yeniden yükleyin. İlk isteği seçin ve İstek Başlıklarını inceleyin.

İstek Başlıklarının İncelenmesi

Bu kullanıcı aracısını kopyalayın ve başlıklar için, kullanıcı aracısı ve kabul edilen dil başlıklarıyla bu örnekte olduğu gibi bir sözlük oluşturun:

custom_headers = { '

user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', 

'accept-language': 'en-GB,en;q=0.9', 

}

Daha sonra bu sözlüğü get yönteminde isteğe bağlı bir parametre olarak gönderebilirsiniz:

response = requests.get(url, headers=custom_headers

Amazon Ürün Bilgilerini Kazımak

Amazon ürünlerini web üzerinden tarama sürecinde genellikle iki tür sayfayla karşılaşırsınız: kategori sayfası ve ürün ayrıntıları sayfası.

Örneğin, ziyaret edin https://www.amazon.com/b?node=12097479011 veya Amazon'da Kulak Üstü Kulaklıkları arayın. Arama sonuçlarını görüntüleyen sayfa, kategori sayfası olarak bilinir.

Kategori sayfası ürün başlığını, ürün görselini, ürün derecelendirmesini, ürün fiyatını ve en önemlisi ürün URL'leri sayfasını sunar. Ürün açıklamaları gibi daha fazla bilgiye ulaşmak için ürün detayları sayfasını ziyaret etmelisiniz.

Ürün detay sayfasının yapısını inceleyelim.

Gibi bir ürün URL'si açın https://www.amazon.com/Bose-QuietComfort-45-Bluetooth-Canceling-Headphones/dp/B098FKXT8L, Chrome veya başka bir modern tarayıcı kullanarak. Ürün başlığına sağ tıklayın ve İncele'yi seçin. Ürün başlığının HTML işaretlemesi vurgulanacaktır.

Bunun, id niteliği “productTitle” olarak ayarlanmış bir span etiketi olduğunu fark edeceksiniz.

Kimlik Özniteliği "productTitle" olarak Ayarlanmış Bir Span Etiketi

Benzer şekilde, fiyatın HTML biçimlendirmesini görüntülemek için fiyata sağ tıklayın ve İncele'yi seçin.

Fiyatın dolar bileşeni, "a-fiyat-bütün" sınıfına sahip bir span etiketinde bulunurken, sent bileşeni, "a-fiyat-kesir" sınıfına sahip başka bir span etiketindedir.

"Fiyat kesri" Sınıfına sahip bir Span Etiketi

Derecelendirmeyi, görseli ve açıklamayı da aynı şekilde bulabilirsiniz.

Bu bilgileri topladıktan sonra mevcut koda aşağıdaki satırları ekleyin:

response = requests.get(url, headers=custom_headers) 

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

Beautiful Soup, find yöntemlerini kullanarak etiketleri seçmek için farklı bir yöntem sunar. Ayrıca alternatif olarak CSS seçicilerini de destekler. Aynı sonucu elde etmek için her iki yaklaşımı da kullanabilirsiniz. Bu eğitimde, öğeleri seçmek için evrensel bir yöntem olan CSS seçicilerini kullanacağız. CSS seçicileri, Amazon ürün bilgilerini çıkarmak için neredeyse tüm web kazıma araçlarıyla uyumludur.

Artık Soup nesnesini kullanarak belirli bilgileri sorgulamaya hazırsınız.

Ürün Adı Çıkarılıyor

Ürün adı veya başlığı 'productTitle' kimliğine sahip bir span öğesinde bulunur. Benzersiz kimlikler kullanarak öğeleri seçmek basittir.

Örnek olarak aşağıdaki kodu düşünün:

title_element = soup.select_one('#productTitle') 

CSS seçiciyi, bir öğe örneği döndüren select_one yöntemine aktarıyoruz.

Metinden bilgi çıkarmak için metin özelliğini kullanın.

title = title_element.text

Yazdırıldığında birkaç beyaz boşluk fark edebilirsiniz. Bu sorunu çözmek için aşağıdaki gibi bir .strip() işlev çağrısı ekleyin:

title = title_element.text.strip()

Ürün Derecelendirmelerini Çıkarma

Amazon ürün derecelendirmelerini almak biraz daha fazla çaba gerektirir.

Öncelikle derecelendirme için bir seçici oluşturun:

#acrPopover

Daha sonra derecelendirmeyi içeren öğeyi seçmek için aşağıdaki ifadeyi kullanın:

rating_element = soup.select_one('#acrPopover')

Gerçek derecelendirme değerinin başlık özelliğinde bulunduğunu unutmayın:

rating_text = rating_element.attrs.get('title') 

print(rating_text)

# prints '4.6 out of 5 stars'

Son olarak sayısal derecelendirmeyi elde etmek için değiştirme yöntemini kullanın:

rating = rating_text.replace('out of 5 stars', '')

Ürün Fiyatını Çıkarma

Ürün fiyatı, ürün başlığının altında ve Şimdi Satın Al kutusunun içinde olmak üzere iki yerde bulunabilir.

Amazon ürün fiyatlarını düşürmek için bu etiketlerden herhangi biri kullanılabilir.

Fiyat için bir CSS seçici oluşturun:

#price_inside_buybox

Bu CSS seçiciyi BeautifulSoup'un select_one yöntemine şu şekilde iletin:

price_element = soup.select_one('#price_inside_buybox')

Artık fiyatı yazdırabilirsiniz:

print(price_element.text)

Görüntü Çıkarılıyor

Varsayılan görüntüyü kazımak için CSS seçici #landingImage'ı kullanın. Bu bilgilerle resim URL'sini src özelliğinden almak için aşağıdaki kod satırlarını yazabilirsiniz:

image_element = soup.select_one('#landingImage') 

image = image_element.attrs.get('src')

Ürün Açıklamasını Çıkarma

Amazon ürün verilerini çıkarmanın bir sonraki adımı ürün açıklamasını elde etmektir.

Süreç tutarlı kalır; bir CSS seçici oluşturun ve select_one yöntemini kullanın.

Açıklamanın CSS seçicisi:

#productDescription

Bu, öğeyi şu şekilde çıkarmamızı sağlar:

description_element = soup.select_one('#productDescription') 

print(description_element.text)

Ürün Listelemeyi Yönetme

Ürün bilgilerini toplamayı inceledik, ancak ürün verilerine erişmek için ürün listeleme veya kategori sayfalarından başlamanız gerekecektir.

Örneğin, https://www.amazon.com/b?node=12097479011 kulak üstü kulaklıkların kategori sayfasıdır.

Bu sayfayı incelerseniz, tüm ürünlerin benzersiz bir özniteliğe [data-asin] sahip bir div içinde yer aldığını göreceksiniz. Bu div içinde, tüm ürün bağlantıları bir h2 etiketindedir.

Bu bilgilerle CSS Seçici şu şekildedir:

[data-asin] h2 a

Bu seçicinin href niteliğini okuyabilir ve bir döngü çalıştırabilirsiniz. Ancak, bağlantıların göreceli olacağını unutmayın. Bu bağlantıları ayrıştırmak için urljoin yöntemini kullanmanız gerekecektir.

from urllib.parse import urljoin 

... 

def parse_listing(listing_url): 

… 

    link_elements = soup_search.select("[data-asin] h2 a") 

    page_data = [] 

    for link in link_elements: 

        full_url = urljoin(search_url, link.attrs.get("href")) 

        product_info = get_product_info(full_url) 

        page_data.append(product_info)

Sayfalandırmayı Yönetme

Bir sonraki sayfanın bağlantısı “Sonraki” metnini içeren bir bağlantıdadır. Bu bağlantıyı CSS'nin include operatörünü kullanarak aşağıdaki şekilde arayabilirsiniz:

next_page_el = soup.select_one('a:contains("Next")')

if next_page_el:

    next_page_url = next_page_el.attrs.get('href')

    next_page_url = urljoin(listing_url, next_page_url)

Amazon Verilerini Dışa Aktarma

Kazınan veriler kasıtlı olarak sözlük olarak döndürülür. Kazınmış tüm ürünleri içeren bir liste oluşturabilirsiniz.

def parse_listing(listing_url):

...

page_data = [] for link in link_elements:

...

product_info = get_product_info(full_url)

page_data.append(product_info)

Daha sonra bir Pandas DataFrame nesnesi oluşturmak için bu page_data'yı kullanabilirsiniz:

df = pd.DataFrame(page_data) 

df.to_csv('headphones.csv', index = False)

Amazon'da Birden Çok Sayfa Nasıl Kazılır

Amazon'da birden fazla sayfayı kazımak, analiz edilecek daha geniş bir veri kümesi sağlayarak web kazıma projenizin etkinliğini artırabilir. Birden fazla sayfayı hedeflerken, içeriği birkaç sayfaya bölme işlemi olan sayfalandırmayı göz önünde bulundurmanız gerekir.

Burada Akılda tutulması gereken 6 önemli nokta Amazon'da birden fazla sayfayı kazırken:

  1. Sayfalandırma modelini tanımlayın: Öncelikle Amazon'un içeriğini nasıl sayfalandırdığını anlamak için kategorinin veya arama sonuçları sayfalarının URL yapısını analiz edin. Bu bir sorgu parametresi (örneğin, “?page=2”) veya URL'ye yerleştirilmiş benzersiz bir tanımlayıcı olabilir.
  2. “Sonraki” sayfa bağlantısını çıkarın: Sonraki sayfaya giden bağlantıyı içeren öğeyi (genellikle bir bağlantı etiketi) bulun. Bir sonraki sayfanın URL'si olan bu öğenin href niteliğini çıkarmak için uygun CSS seçiciyi veya Güzel Çorba yöntemini kullanın.
  3. Göreli URL'leri mutlak URL'lere dönüştürün: Çıkarılan URL'ler göreceli olabileceğinden, urljoin işlevi urllib.parse bunları mutlak URL'lere dönüştürmek için kitaplık.
  4. Bir döngü oluşturun: Sayfalar arasında yinelenen ve her birinden istenen verileri alan bir döngü uygulayın. Döngü, başka sayfa kalmayıncaya kadar devam etmelidir; bu, mevcut sayfada "Sonraki" sayfa bağlantısının olup olmadığı kontrol edilerek belirlenebilir.
  5. İstekler arasına gecikmeler ekleyin: Amazon sunucusunun aşırı yüklenmesini veya bot karşıtı önlemlerin tetiklenmesini önlemek için, istekler arasında gecikmeler oluşturun. time.sleep() işlevi time kütüphane. İnsan tarama davranışını taklit etmek için gecikme süresini ayarlayın.
  6. CAPTCHA'ları ve blokları yönetme: Birden fazla sayfayı kazırken CAPTCHA'larla veya IP bloklarıyla karşılaşırsanız, IP adreslerini döndürmek için proxy'ler veya bu zorlukları otomatik olarak çözebilecek özel kazıma araçları ve hizmetleri kullanmayı düşünün.

Aşağıda, Amazon'un web sitesindeki birden fazla sayfadan veri çıkarma sürecinde size rehberlik eden kapsamlı bir YouTube video eğitimi bulacaksınız. Eğitim, web kazıma dünyasına derinlemesine inerek, çok sayıda Amazon sayfasından değerli bilgileri verimli ve etkili bir şekilde toplamanızı sağlayacak tekniklere odaklanıyor.

Eğitim boyunca sunum yapan kişi, Python, BeautifulSoup ve istekler gibi temel araçların ve kütüphanelerin kullanımını gösterirken, Amazon'un bot karşıtı mekanizmaları tarafından engellenmekten veya tespit edilmekten kaçınmak için en iyi uygulamaları vurgular. Video, sayfalandırmayı yönetme, hız sınırlarını yönetme ve insan benzeri tarama davranışını taklit etme gibi temel konuları ele alır.

Videoda sağlanan adım adım talimatlara ek olarak, eğitimde ayrıca web kazıma deneyiminizi optimize etmek için yararlı ipuçları ve püf noktaları da paylaşılmaktadır. Bunlar arasında IP kısıtlamalarını atlamak için proxy'lerin kullanılması, Kullanıcı Aracısı ve istek başlıklarının rastgele seçilmesi ve sorunsuz ve kesintisiz bir kazıma süreci sağlamak için uygun hata işlemenin uygulanması yer alır.

Amazon'u Kazımak: SSS

Popüler bir e-ticaret platformu olan Amazon'dan veri çıkarma söz konusu olduğunda, dikkat edilmesi gereken bazı şeyler vardır. Amazon verilerini toplamayla ilgili sık sorulan sorulara bir göz atalım.

1. Amazon'u Kazımak Yasal mı?

İnternetten halka açık verilerin kazınması yasaldır ve buna Amazon'un kazınması da dahildir. Ürün ayrıntıları, açıklamalar, derecelendirmeler ve fiyatlar gibi bilgileri yasal olarak kazıyabilirsiniz. Ancak ürün incelemelerini kazırken kişisel veriler ve telif hakkı koruması konusunda dikkatli olmalısınız. Örneğin, incelemeyi yapanın adı ve avatarı kişisel veri teşkil edebilirken, inceleme metni telif hakkıyla korunuyor olabilir. Bu tür verileri kazırken daima dikkatli olun ve yasal tavsiye alın.

2. Amazon Kazımaya İzin Veriyor mu?

Herkese açık verilerin kazınması yasal olsa da Amazon bazen kazımayı önlemek için önlemler alır. Bu önlemler arasında hız sınırlayıcı istekler, IP adreslerinin yasaklanması ve kazıma botlarını tespit etmek için tarayıcı parmak izinin kullanılması yer alıyor. Amazon genellikle web kazımayı 200 OK başarı durumu yanıt koduyla engeller ve ücretli bir API için satış ekibiyle iletişime geçmek için bir CAPTCHA'yı geçmenizi gerektirir veya bir HTTP Hatası 503 Hizmet Kullanılamıyor mesajı görüntüler.

Bu önlemleri atlatmanın yolları var, ancak etik web kazıma, ilk etapta bunların tetiklenmesini önlemeye yardımcı olabilir. Etik web kazıma, istek sıklığının sınırlandırılmasını, uygun kullanıcı aracılarının kullanılmasını ve web sitesi performansını etkileyebilecek aşırı kazımanın önlenmesini içerir. Etik olarak kazıma yaparak, Amazon'dan yararlı veriler almaya devam ederken yasaklanma veya yasal sonuçlarla karşı karşıya kalma riskini azaltabilirsiniz.

3. Amazon Verilerini Kazımak Etik Midir?

Etik kazıma, hedef web sitesine saygı duymayı içerir. Amazon web sitesini çok fazla istekle doldurmanız pek olası olmasa da, yine de etik kazıma yönergelerini takip etmelisiniz. Etik kazıma, yasal sorunlarla karşılaşma veya kazıma karşıtı önlemlerle uğraşma riskini en aza indirebilir.

4. Amazon'u Kazıırken Yasaklanmayı Nasıl Önleyebilirim?

Amazon'u kazırken yasaklanmayı önlemek için istek oranlarınızı sınırlamalı, yoğun saatlerde kazıma yapmaktan kaçınmalı, akıllı proxy rotasyonunu kullanmalı ve tespit edilmekten kaçınmak için uygun kullanıcı aracıları ve başlıkları kullanmalısınız. Ek olarak, yalnızca ihtiyacınız olan verileri çıkarın ve üçüncü taraf kazıma araçlarını veya kazıma kitaplıklarını kullanın.

5. Amazon'u Kazımanın Riskleri Nelerdir?

Amazon verilerinin kazınması, yasal işlem ve hesabın askıya alınması gibi potansiyel riskler taşır. Amazon, kazımayı tespit etmek ve önlemek için IP adresi yasakları, hız sınırlaması ve tarayıcı parmak izi alma dahil olmak üzere anti-bot önlemlerini kullanır. Ancak etik olarak kazıyarak bu riskleri azaltabilirsiniz.

Çözüm

Amazon web kazıma işleminin büyüleyici labirentinden çıktığımızda, bu heyecan verici yolculukta topladığımız paha biçilmez bilgi ve becerileri takdir etmek için bir an ayırmanın zamanı geldi. Güvenilir rehberiniz ProxyCompass ile perakende devinin paha biçilmez verilerini çıkarmanın kıvrımlarını ve dönüşlerini başarıyla aştınız. Yeni kazandığınız uzmanlığı ustalıkla kullanarak ilerlerken, dijital ormanın asla evrimleşmeyi bırakmadığını unutmayın.

Meraklı kalın, web kazıma palanızı keskinleştirmeye devam edin ve sürekli değişen veri çıkarma ortamını fethetmeye devam edin. Bir sonraki cesur keşif gezimize kadar cesur kaşif, veriye dayalı görevleriniz verimli ve ödüllendirici olsun!

Alexander Schmidt

Alexander Schmidt, daha çok değil, daha akıllıca çalışmanın gerektiğine inanan bir yazılım mühendisidir. Analiz ve araştırma için otomasyon ve web verilerinin çıkarılmasıyla ilgili 12 yıllık deneyimiyle, başkalarının proxy çözümlerinin değerini ve performansını en üst düzeye çıkarmasına yardımcı olmak için işletmelere eğlenceli ve okunması kolay bir şekilde sunulan pratik ipuçları ve değerli bilgilerle güç veriyor. Kurulumunda değişiklik yapmadığı veya KOBİ'lere danışmanlık yapmadığı zamanlarda, Alexander'ı en son teknoloji haberlerini ve yapay zeka gelişmelerini araştırırken bulabilirsiniz.

Proxy Seçin ve Satın Alın

Fiyatları anında görüntülemek için tür, konum ve miktar seçin.

Proxy Seçin ve Satın Alın