Requests ile lxml kütüphanesiin kullanarak yapmış olduğum basit bir kodlamayı sizlere sunuyorum linki yapiştirdiginiz ürünnü bilgisini alt alta excel dosyasına kaydediyor..
from lxml import html
import requests
import pandas as pd
linko = input("Trendyol ürün Linki Yapıştır: ")
url = f"{linko}"
page = requests.get(url)
tree = html.fromstring(page.content)
title = tree.xpath("//h1[@class='pr-new-br']/span/text()")
price = tree.xpath("//span[@class='prc-dsc']/text()")
brand = tree.xpath("//a[@class='product-brand-name-with-link']/text()")
gallery_div = tree.xpath("//div[@class='gallery-container']")
if gallery_div:
images = gallery_div[0].xpath(".//img/@src")
else:
images = []
if title and price and brand:
print(f"Ürün İsmi = {title[0]}")
print(f"Ürün Fiyatı = {price[0]}")
print(f"Marka = {brand[0]}")
if len(images) > 1:
print(f"Ürün Resmi = {images[1]}")
else:
print("Ürün resmi bulunamadı.")
else:
print("Başlık veya fiyat veya marka bulunamadı.")
# Karakter kodlaması sorununu giderme
title = [t.encode('latin-1').decode('utf-8') if t else None for t in title]
price = [p.encode('latin-1').decode('utf-8') if p else None for p in price]
brand = [b.encode('latin-1').decode('utf-8') if b else None for b in brand]
# Veri uzunluklarını kontrol etme
lengths = [len(title), len(price), len(brand), len(images)]
max_length = max(lengths)
min_length = min(lengths)
# Tüm dizileri aynı uzunluğa getirme
title += [None] * (max_length - len(title))
price += [None] * (max_length - len(price))
brand += [None] * (max_length - len(brand))
images += [None] * (max_length - len(images))
# Verileri birleştirip DataFrame oluşturma
data = {
"Ürün İsmi": title,
"Ürün Fiyatı": price,
"Marka": brand,
"Ürün Resmi": images
}
# Mevcut verileri yükle (varsa)
try:
existing_df = pd.read_excel("urun_bilgileri.xlsx")
except FileNotFoundError:
existing_df = pd.DataFrame()
# Yeni verileri DataFrame'e dönüştür
new_df = pd.DataFrame(data)
# Mevcut verilerle yeni verileri birleştir
combined_df = pd.concat([existing_df, new_df], ignore_index=True)
# Birleştirilmiş verileri Excel dosyasına kaydet
combined_df.to_excel("urun_bilgileri.xlsx", index=False)