• 16-09-2023, 22:08:15
    #1
    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)
  • 06-12-2023, 11:14:15
    #2
    Paylaşımınız için teşekkür ederim. Bu kodla yalnız title çekilebiliyor. Sanırım diğer veriler için site engel mi koydu acaba?
  • 06-12-2023, 17:24:21
    #3
    steppe adlı üyeden alıntı: mesajı görüntüle
    Paylaşımınız için teşekkür ederim. Bu kodla yalnız title çekilebiliyor. Sanırım diğer veriler için site engel mi koydu acaba?
    hayır başlık marka fiyat ürün resmi. bunlari çekiyor
  • 10-12-2023, 17:06:20
    #4
    hocam bazen css değiştiriliyor bende hepsiburada için verdı dün gece veri çekeyim dedim divler class lar değişmiş.