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
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.