Öneri Chatgpt kullanarak amazon indirimli ürünleri listeleyen code yazdım.

PcKedy

80+
Katılım
12 Mart 2023
Mesajlar
13
Reaksiyon skoru
13
Merhaba Daha önceden Trendyol olanı için yapmıştım ama amazon yapman daha mantıklı olur dendi bende amazon olanını yaptım.

önceki attığım konum burada!


KODUN AMAZON İNDİRİMLİ ÜRÜNLERİ LİSTELEDİĞİ EXCEL DOSYASI ÖRNEK:



kurulum:

öncelikle python 3 kurmanız ve şu kütüphaneleri yüklemeniz lazım

BeautifulSoup,bs4,pandas,requests,openpyxl,xlsxwriter

kütüphane nasıl yüklenir:

python yükledikten sonra herhangi bir yerden cmd açıp

pip install kütüphane ismi

birde python editörü lazım visual code indirebilirsniz. (kod dosyasının bulunduğu yere komut istemi (cmd) açıpta çalıştırabilirsiniz)
onu nasıl yaparsınız onu anlatıyım:

bir klasöre girin üste diziin yazan yere (C:\Users\Administrator\Desktop\python) yani buraya (cmd yazın ve enterlayın)
sonra python dosyaismi.py diyip çalıştırın.

Kod:
import requests
from bs4 import BeautifulSoup
import pandas as pd

headers = {
    'accept-language': 'tr-TR,tr;q=0.9',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-encoding': 'gzip, deflate, br'
}

url = 'https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A16225009011%2Cn%3A541966&page=2&language=en_US&currency=TRY&qid=1679175799&ref=sr_pg_{}'

data = []

for page in range(1, 6):  # İlk 5 sayfa için listeleme yapılıyor
    response = requests.get(url.format(page), headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')

    products = soup.find_all('div', {'class': 'a-section a-spacing-base'})

    for product in products:
        try:
            name = product.find('span', {'class': 'a-size-base-plus a-color-base a-text-normal'}).text.strip()
            original_price = float(product.find('span', {'class': 'a-price a-text-price'}).find('span', {'class': 'a-offscreen'}).text.replace('$', ''))
            discounted_price = float(product.find('span', {'class': 'a-price'}).find('span', {'class': 'a-offscreen'}).text.replace('$', ''))

            difference = original_price - discounted_price
            difference_percent = round((difference / original_price) * 100)

            data.append([name, original_price, discounted_price, difference, difference_percent])
        except AttributeError:
            continue

df = pd.DataFrame(data, columns=['Ürün İsmi', 'Orjinal Fiyatı', 'İndirimli Fiyatı', 'İndirim Farkı', 'İndirim Oranı'])

# Fiyat sütunlarına dolar işareti ekle
df[['Orjinal Fiyatı', 'İndirimli Fiyatı', 'İndirim Farkı']] = df[['Orjinal Fiyatı', 'İndirimli Fiyatı', 'İndirim Farkı']].applymap('${:,.2f}'.format)

# İndirim Oranı sütununa yüzdelik işareti ekle
df['İndirim Oranı'] = df['İndirim Oranı'].apply(lambda x: str(x) + '%')

# Verileri Excel dosyasına kaydet
writer = pd.ExcelWriter('Amazon_İndirimli_Ürün_Listesi.xlsx', engine='xlsxwriter')
df.to_excel('Amazon_İndirimli_Ürün_Listesi.xlsx', index=False, engine='openpyxl')

yapmanız gereken 2 değişiklik var 1. url 2. ise kaç sayfa veri çekceğini ayarlamaktır

amazonda bir kategori seçtiniz ve filtrelediniz biraz aşağı inip 2. sayfaya geçiyoruz ve url sonu pg_5 şeklinde bitecek bunu koddaki url ye ekliyoruz ama 5 kısmını siliyoruz. (tamamen örnektir.)

Kod:
url = 'https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A16225009011%2Cn%3A541966&page=2&language=en_US&currency=TRY&qid=1679175799&ref=sr_pg_{}'
sonraki değiştireceğimiz şey ise sayfa aralığı 1 ile 6 sayfalarının hepsini listelesin dersek 1-5 daki tüm indirimli ürünleri listeler

örnek:
Kod:
for page in range(1, 6)

son işlem çalıştırmak.

ve biraz bekleyin listeleyip excele aktarsın.

UMARIM İYİ ANLATABİLMİŞİMDİR.
 
Son düzenleme:
vay denyıyorum hemen :D
 
Denedikten sonra nasıl işey yararmı herhangi bir yorum eklermisin.
 
Eline sağlık güzel faydalı konu olmuş hocam.
 
helal olsun. başarılarının devamını dilerim👏
 
Merhaba Daha önceden Trendyol olanı için yapmıştım ama amazon yapman daha mantıklı olur dendi bende amazon olanını yaptım.

önceki attığım konum burada!


KODUN AMAZON İNDİRİMLİ ÜRÜNLERİ LİSTELEDİĞİ EXCEL DOSYASI ÖRNEK:



kurulum:

öncelikle python 3 kurmanız ve şu kütüphaneleri yüklemeniz lazım

BeautifulSoup,bs4,pandas,requests,openpyxl

kütüphane nasıl yüklenir:

python yükledikten sonra herhangi bir yerden cmd açıp

pip install kütüphane ismi

birde python editörü lazım visual code indirebilirsniz. (kod dosyasının bulunduğu yere komut istemi (cmd) açıpta çalıştırabilirsiniz)
onu nasıl yaparsınız onu anlatıyım:

bir klasöre girin üste diziin yazan yere (C:\Users\Administrator\Desktop\python) yani buraya (cmd yazın ve enterlayın)
sonra python dosyaismi.py diyip çalıştırın.

Kod:
import requests
from bs4 import BeautifulSoup
import pandas as pd

headers = {
    'accept-language': 'tr-TR,tr;q=0.9',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36',
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
    'accept-encoding': 'gzip, deflate, br'
}

url = 'https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A16225009011%2Cn%3A541966&page=2&language=en_US&currency=TRY&qid=1679175799&ref=sr_pg_{}'

data = []

for page in range(1, 6):  # İlk 5 sayfa için listeleme yapılıyor
    response = requests.get(url.format(page), headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')

    products = soup.find_all('div', {'class': 'a-section a-spacing-base'})

    for product in products:
        try:
            name = product.find('span', {'class': 'a-size-base-plus a-color-base a-text-normal'}).text.strip()
            original_price = float(product.find('span', {'class': 'a-price a-text-price'}).find('span', {'class': 'a-offscreen'}).text.replace('$', ''))
            discounted_price = float(product.find('span', {'class': 'a-price'}).find('span', {'class': 'a-offscreen'}).text.replace('$', ''))

            difference = original_price - discounted_price
            difference_percent = round((difference / original_price) * 100)

            data.append([name, original_price, discounted_price, difference, difference_percent])
        except AttributeError:
            continue

df = pd.DataFrame(data, columns=['Ürün İsmi', 'Orjinal Fiyatı', 'İndirimli Fiyatı', 'İndirim Farkı', 'İndirim Oranı'])

# Fiyat sütunlarına dolar işareti ekle
df[['Orjinal Fiyatı', 'İndirimli Fiyatı', 'İndirim Farkı']] = df[['Orjinal Fiyatı', 'İndirimli Fiyatı', 'İndirim Farkı']].applymap('${:,.2f}'.format)

# İndirim Oranı sütununa yüzdelik işareti ekle
df['İndirim Oranı'] = df['İndirim Oranı'].apply(lambda x: str(x) + '%')

# Verileri Excel dosyasına kaydet
writer = pd.ExcelWriter('Amazon_İndirimli_Ürün_Listesi.xlsx', engine='xlsxwriter')
df.to_excel('Amazon_İndirimli_Ürün_Listesi.xlsx', index=False, engine='openpyxl')

yapmanız gereken 2 değişiklik var 1. url 2. si ise url (kategorinin kaç tanesini çekmek istiyorsanız onu değiştirmeniz)

amazonda bir kategori seçtiniz ve filtrelediniz biraz aşağı inip 2. sayfaya geçiyoruz ve url sonu pg_5 şeklinde bitecek bunu koddaki url ye ekliyoruz ama 5 kısmını siliyoruz. (tamamen örnektir.)

Kod:
url = 'https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A16225009011%2Cn%3A541966&page=2&language=en_US&currency=TRY&qid=1679175799&ref=sr_pg_{}'
sonraki değiştireceğimiz şey ise sayfa aralığı 1 ile 6 sayfalarının hepsini listelesin dersek 1-5 daki tüm indirimli ürünleri listeler

örnek:
Kod:
for page in range(1, 6)

son işlem çalıştırmak.

ve biraz bekleyin listeleyip excele aktarsın.

UMARIM İYİ ANLATABİLMİŞİMDİR.
anlamadııgm değişikliklerde 2 defa url demıssın burda tam olarak neyı kast ettın?
 
anlamadııgm değişikliklerde 2 defa url demıssın burda tam olarak neyı kast ettın?
2. url yani kategorinin url sinin sonunda pg_5 yazıyor mesela onu değiştirmekten bahsettim orada kafa karıştırıyorsa kaldırım
 
2. url yani kategorinin url sinin sonunda pg_5 yazıyor mesela onu değiştirmekten bahsettim orada kafa karıştırıyorsa kaldırım
1679178364862.png

bu hatayı aldım bunun çözümü hakkında bilgin varmı
sanırım tl dönüşümü yaaprken sıkııntı cıkıyor
 
evet o sorunu çözemedim TL olarak dönüşüm yapamıyor lütfen normal amazon defult yani dolar kurundan gösteren url sini atarsan sorun düzelicektir diye düşünüyorum.
tamamdır bakıyorum
Mesajlar otomatik olarak birleştirildi:

bu seferde turkıye de kullanmamız mumkun olmuyor dığru anladıysam amazon globalden bir link koyarsak yani
 
tamamdır bakıyorum
Mesajlar otomatik olarak birleştirildi:

bu seferde turkıye de kullanmamız mumkun olmuyor dığru anladıysam amazon globalden bir link koyarsak yani
size video atabilirmiyim. nasıl yapıldığına dair isterseniz.
 
Koddaki url'i değiştirmek isteyen arkadaşlar url'in ortasında page=2 diye bir yer var oraya da {} koyup altta format olarak vermelisiniz.
Yoksa sadece 1 sayfa üzerinden işlem yaparsınız. sondaki sg_pg sayfaları değiştirmez
 
url yı hallettık bu sefer de excel olusturuken hata verıyor :D ulan bu pythondan bıktıgm kadar baska dil den bıkmadım
Mesajlar otomatik olarak birleştirildi:

1679178970735.png
 
Yeni mesajlar Yeni Konu Aç  

   

SON KONULAR

Forum istatistikleri

Konular
1,164,279
Mesajlar
10,495,014
Üyeler
184,915
Son üye
oziiyi
Geri
Top