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!
Ne kadar İşinize Yarar Bilmiyorum öncelikle python 3 kurmanız ve şu kütüphaneleri yüklemeniz lazım BeautifulSoup,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...
forum.donanimarsivi.com
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¤cy=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¤cy=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:
son işlem çalıştırmak.
ve biraz bekleyin listeleyip excele aktarsın.
UMARIM İYİ ANLATABİLMİŞİMDİR.