Skip to main content

Gedore képek letöltése

GedoreImageDownloader Program Használati Útmutató

A GedoreImageDownloader egy C#-ban írt szoftver, amely a https://gedore.com weboldalról tölti le a cikkszámokhoz tartozó termékadatokat, beleértve a leírásokat, képeket és az esetleges méretinformációkat. Az alábbiakban részletezzük a program logikáját és működését.


Általános működés

  • Cél:
    A szoftver célja, hogy a bemeneti CSV fájlban szereplő cikkszámok alapján automatikusan lekérje a termékekhez tartozó adatokat a Gedore weboldalról, majd ezeket egy kimeneti CSV fájlba mentse.

  • Használt technológiák:

    • C#: A program fő nyelve.
    • PuppeteerSharp: Az automatizált böngésző-kezeléshez, amely lehetővé teszi a weboldal manipulálását (navigáció, elemek keresése, adatok kinyerése).
    • HttpClient: A képek letöltésére.

Fájlok kezelése

  • Bemeneti fájl (Input CSV):
    • Minden sor egy cikkszámot tartalmaz.
    • A program ezt a fájlt olvassa be, és minden nem üres sort külön cikkszámként kezel.
  • Kimeneti fájl (Output CSV):
    • Az eredményeket CSV formátumban menti.
    • A fájl tartalmazza a következő oszlopokat:
      • searchTerm: A cikkszám
      • imageFilename: A letöltött kép fájlneve (ha sikeres volt a letöltés)
      • description1: Az első leírás
      • description2: A második leírás vagy méretinformáció
    • A program nem írja felül a meglévő kimeneti fájlt, hanem új eredményeket hozzáfűz. Ezáltal elkerülhető a már feldolgozott cikkszámok újbóli feldolgozása.

Folyamat és logika lépésről lépésre

Előkészítés

  • Könyvtárak létrehozása:
    Ellenőrzi, hogy a képek mentésére használt könyvtár (pl. downloaded_images) létezik-e, és ha nem, létrehozza azt.

  • Feldolgozott elemek kiszűrése:
    A program beolvassa a már létező kimeneti CSV fájlt, és az abban szereplő cikkszámokat egy HashSet-ben tárolja. Így a bemeneti fájlban szereplő cikkszámok közül csak azok kerülnek feldolgozásra, amelyek még nincsenek az output fájlban.

Böngésző indítása és konfigurálása

  • Chromium letöltése:
    A PuppeteerSharp segítségével ellenőrzi, hogy a Chromium elérhető-e, és ha szükséges, letölti azt.

  • Böngésző indítása:
    A program elindítja a böngészőt a megadott opciókkal. Linux környezetben ideális a headless mód használata, de a fejlesztés során érdemes lehet látható módban futtatni a hibakeresés miatt.

  • Timeout beállítások:
    Az alapértelmezett navigációs és műveleti timeoutokat 60 másodpercre állítja be, így elkerülhetőek a hosszú várakozások (pl. 180000 ms helyett).

Weboldal navigáció és adatkinyerés

  • Navigáció a termékoldalra:
    A program a https://gedore.com/en-de/products oldalra navigál.

  • Cookie elfogadás:
    Ha megjelenik egy cookie elfogadó popup, a program automatikusan rákattint, hogy elfogadja azt.

  • Keresés:

    • A keresőmező megtalálása: A program az oldal megfelelő input elemét keresi.
    • A cikkszám beírása és a keresés elindítása: A bemeneti CSV-ban szereplő cikkszám kerül beírásra, majd Enter lenyomásával elindul a keresés.
  • Eredmény feldolgozása:

    • A keresési eredmények közül az első találatot választja ki.
    • Ha nincs találat, a cikkszám esetében alapértelmezett értékeket állít be („Image not found”, „Description not found”).

Adatok kinyerése a termékoldalról

  • Kép letöltése:

    • A program megkeresi a termék képét tartalmazó elemet.
    • Ellenőrzi, hogy a kép nem egy "fallback" kép-e (azaz valódi termékkép-e).
    • Ha érvényes a kép, letölti azt az HttpClient segítségével, és a fájl a downloaded_images könyvtárba kerül mentésre.
  • Leírások kinyerése:

    • A termékoldal leírásai általában lista elemekben találhatók.
    • A program megpróbálja kinyerni az első és második leírást, melyek általában a termék jellemzőit, méreteit tartalmazzák.

Hibakezelés és újrapróbálkozás

  • Próbálkozások száma:
    Minden cikkszám feldolgozásakor a program maximum három próbálkozást tesz (MAX_RETRIES), ha hiba lép fel (például időtúllépés, frame detach, stb.).

  • Hiba esetén:

    • A hibaüzenetek logolásra kerülnek a konzolra.
    • Ha egy cikkszám feldolgozása sikertelen, alapértelmezett „nem található” értékek kerülnek mentésre, és a program a következő cikkszámra lép.

Eredmények mentése

  • CSV fájlba írás:
    Az egyes cikkszámok feldolgozása után a program az eredményeket append módon írja bele az output CSV fájlba.
    Ez biztosítja, hogy a program újraindítása esetén a már feldolgozott elemek kihagyásra kerülnek.

Logolás

  • Konzol kimenet:
    A program minden fontosabb lépésről és hibáról log üzenetet ír a konzolra, így könnyen követhető a folyamat.

  • Részletes visszajelzés:
    A logok tartalmazzák a navigációs lépéseket, a keresési eredményeket, a képfeldolgozás állapotát és a CSV fájlba írás sikerességét.