Parsing vagy pars-olás
***
Írásainkat olyan, az informatika iránt érdeklődőknek szánjuk, akik egyelőre még szinte semmit vagy csak nagyon keveset tudnak az IT, weboldal készítés, internet, hálózatok, programozás, stb. világáról. Az általunk használt kifejezések és magyarázatok a nem szakmabelieknek szólnak. Cserébe közérthetően szeretnénk bemutatni az informatika különböző területeit és fogalmait.
***
Mi az a “pars”-olás?
A "parsing" szó szószerinti jelentése az angol nyelvben az "elemzés" vagy "feldolgozás". Leggyakrabban informatikai vagy nyelvészeti környezetben használják.
Tehát, bár a "parsing" kifejezést különböző területeken is használatos, az alapvető gondolat az, hogy valamit részletekre bontunk és elemezzük azt.
A 'pars'-olás egy olyan folyamat, amely során egy adatsorozatot vagy szövegstruktúrát elemzünk, hogy azután az információt strukturált formára alakítsuk és/vagy tároljuk. Lépésről lépésre haladva elemezzük és dolgozzuk fel az információkat, hogy végül egy átfogó képet kapjunk az egészről, illetve a korábban nem strukturáltan tárolt adatokat megfelelően rendszerezett formában tároljuk.
A nem szakmabeliek számára ez így még esetleg nem mindenkinek világos, ezért lássunk egy példát:
Önéletrajzok 'pars'-olása és adatbázisba rendezése
Tételezzül fel, hogy egy cég álláshirdetést ad fel. Ezután rengeteg önéletrajzot kap különböző formátumokban, például Word és PDF file-okban.
Mivel az önéletrajzokat különböző emberek írják, ezért azok nem követik ugyanazt a szabályt vagy formátumot, így az adatok különböző kifejezésekkel jelenhetnek meg. Azonban az információk 'pars'-olása és strukturált formába rendezése kulcsfontosságú a cég számára. Lássuk be, hogy sok száz jelentkező esetén érdemes a “száraz” adatokat (amelyeknek formája nem befolyásolja a későbbi döntést) azonos formára alakítani. Ennek sok oka lehet, de lássuk be, az adatfeldolgozást érdemes hatékonnyá tenni.
Joggal kérdezhetnénk, hogy miért nem azonos az önéletrajzok felépítése. Ha az lenne, akkor nem lenne szükség pars-olásra. Azonban nyilvánvaló, hogy az emberek különböző módokon szeretik bemutatni a képességeiket és tapasztalataikat. Ráadásul a jelentkező által beküldött anyagok formája és minősége sokat mondhat a jelentkezőről, még mielőtt a tartalmát részletesen megvizsgálnánk.
Vagyis a folyamatot bármennyire is szeretnénk sablonosítani, vannak helyzetek, amikor azt nem tehetjük meg.
Lássuk a pars-olás lépéseit!
Először azonosítanunk kell az önéletrajz formátumát (erre most nem térünk ki részletesen). Ezután kell “kivonni” a szöveget a file-okból. Erre is megvannak a megfelelő eszközök. Ekkor érünk el oda, hogy már legyen “alapanyagunk” - vagyis nyers szövegünk -, amit pars-olni tudunk.
Kulcsszavak és kifejezések keresése:
A szöveg kivonása után specifikus kifejezéseket keresünk, mint például "név", "nevem", “teljes név”, stb., vagy pl. "születési dátum", “születési idő”, stb. A pars-olást végző szoftver fejlesztőjének természetesen tisztában kell lennie a lehetséges szövegváltozatokkal.
Adatkivonás
Amikor a kulcsszavakat megtaláltuk (pl. “Név”), akkor az azt következő szöveget kivonjuk / letároljuk. Feltételezhetjük, hogy a jelentkező neve szerepel a “Név:” után.
Ugyanígy járunk el minden további adat esetén: Hasonló logikával keresünk más releváns információkat, mint például tapasztalat, végzettség, nyelvismeret, stb.
Bár az adatok megtalálása és értelmezése a humán elme számára nem jelent nehézséget, egy erre a célra szolgáló szoftver kifejlesztése sok tapasztalatot kíván.
Megjegyzés:
Az MI (Mesterséges Intelligencia vagy AI - Artificial Intelligence) ebben óriási segítséget nyújt majd a jövőben. Bár elkerülhetetlen, hogy emberi elme ellenőrizze a végeredményt, de az biztos, hogy a “robotikus” adatfeldolgozás területén sok változásnak lehetünk tanúi már most is.
Mivel az önéletrajzokból kivont adatok formázása és megfogalmazása változhat, fontos az adatok “megfésülése”. Például, ha valaki "5 év tapasztalat" formában ír, míg másvalaki ugyanezt "ötéves munkatapasztalat" formában, az adatokat egységes, például "5 év" formára kell alakítanunk.
Lássunk egy másik példát:
Tegyük fel, hogy egy log fájlban tároljuk a hálózati forgalmat, és a következő adatsort kapjuk:
Adatsor: "2023-08-10 14:55:32 - IP: 192.168.1.5 - Kérés: GET /index.html - Állapot: 200"
Célunk, hogy ezt az adatsorozatot elemezzük, és strukturált formába hozzuk, hogy könnyebben kezelhető legyen az információ és statisztikai elemzést végezhessünk.
- Elemzési lépések:Felosztjuk az adatsort az elválasztó jelek ("-") mentén.
- Minden darabot tovább bontunk a releváns kulcs-érték párokra.
Eredmény:
Python kód segítségével az adatsor feldolgozását így valósíthatjuk meg:
adatsor = "2023-08-10 14:55:32 - IP: 192.168.1.5 - Kérés: GET /index.html - Állapot: 200"
darabok = adatsor.split(" - ")
adatok = {
"Dátum és idő": darabok[0],
"IP": darabok[1].split(": ")[1],
"Kérés": darabok[2].split(": ")[1],
"Állapot": darabok[3].split(": ")[1]
}
print(adatok)
Ez a következő eredményt adja:
{
"Dátum és idő": "2023-08-10 14:55:32",
"IP": "192.168.1.5",
"Kérés": "GET /index.html",
"Állapot": "200"
}
Ezt az adatot már könnyen tudjuk adatbázisban tárolni, és elemezni.
A pars-olás egy formája: Web scraping
A web scraping is egy formája a pars-olásnak, de specifikus célt szolgál.
Ezt a technikát általában akkor alkalmazzák, amikor nincs más módja az adott weboldalról származó adatok gyűjtésére, pl. nincs API vagy egyéb közvetlen hozzáférés. A web scraping során a programok (nevezik őket "scrapereknek" vagy "botoknak") letöltik a weboldal forráskódját, majd elemezik azt az érdeklődésre számot tartó információk megtalálásához.
Web Scraping és Pars-olás
Amikor egy scraper letölti egy weboldal forráskódját, azt általában HTML formában kapja meg. Az információk kinyeréséhez a programnak "pars-olnia" kell ezt a forráskódot, hogy megtalálja az érdeklődésre számot tartó részleteket.
Fontos megjegyezni, hogy a web scraping nem mindig szolgál etikus célokat.
Példa az etikátlan web scraping-re
Egy gyakori példa az etikátlan web scrapingre az ármonitorozás. Ebben a forgatókönyvben egy vállalkozás botokat vagy scrapereket használ annak érdekében, hogy folyamatosan monitorozza a versenytársak weboldalait, és azonnal értesítést kapjon arról, ha az áraik változnak.
Bár az ármonitorozás önmagában nem illegális, és sok vállalat használja stratégiai döntéshozatali célokra, a folyamatos web scraping a következő problémákat okozhatja:
- Szerverterhelés: Ha több scraper folyamatosan lekérdezi és elemzi egy weboldalt, az jelentős terhet róhat az oldal szervereire, ami lelassulást vagy akár leállást is okozhat.
- Adatmanipuláció: Ha egy vállalkozás tudja, hogy a versenytársai monitorozzák az árait, manipulálhatja azokat, hogy félrevezesse őket. Például ideiglenesen emelheti az árait, hogy a versenytársai is emeljék az övéiket, majd gyorsan csökkentse vissza azokat, hogy piaci előnyt szerezzen.
- Szellemi tulajdon kérdése: A weboldalak adatai szellemi tulajdont képeznek. A web scraping során más vállalkozások vagy egyének az adatokat a tulajdonos engedélye nélkül gyűjthetik és felhasználhatják.
- Tisztességtelen verseny: Az olyan vállalkozások, amelyek folyamatosan monitorozzák és azonnal reagálnak a versenytársak árváltozásaira, eltompíthatják a piaci versenyt, ami hátrányosan érintheti a fogyasztókat.
Ebben a kontextusban a web scraping potenciálisan etikátlan, mivel a vállalkozások a versenytársak adatait használják fel saját előnyükre, de gyakran a versenytársak tudta vagy beleegyezése nélkül.
A szerverterhelés problémája
A webszerverek nem mindig kedvelik, ha tartalmukat 'pars'-olják, különösen, ha ez az információgyűjtés túlzott.
Ha egy szerver túl sok kérést érzékel rövid idő alatt egy IP-címről, gyanúsnak találhatja és ideiglenesen letilthatja azt.
A "túlzott" terhelés pontos értékét nehéz általánosan meghatározni, de ha például egy átlagos weboldal felé 1 másodpercenként 10-nél több kérést indítanak egy adott IP címről hosszabb időre, akkor az már gyanús lehet.
Amikor egy szerver túlzottnak ítéli meg a kérések számát egy adott IP-címről, korlátozhatja a forgalmat. Azonban ez már túlmutat a parsing vagy web scraping témakörén.
***
Bizony, jó messzire jutottunk: Parsing-tól a szerverterhelésig. Ebból is látható, hogy az IT rendkívül érdekes, kimeríthetetlen terület.
Ha nem csak olvasgatni szeretnél az informatikáról, hanem komolyabban is foglalkozni vele, válassz online végezhető képzésein közül:
Hamarosan induló tanfolyamok:
- 2025-02-08 Junior Java backend fejlesztő
- 2025-02-08 Junior frontend fejlesztő
- 2025-02-12 Junior Java backend fejlesztő
- 2025-02-12 Junior frontend fejlesztő
- 2025-02-12 Junior rendszerüzemeltető
- 2025-02-13 Junior Java backend fejlesztő
- 2025-02-13 Junior frontend fejlesztő
- 2025-02-13 Junior szoftvertesztelő
- 2025-02-15 Junior szoftvertesztelő
- 2025-02-15 Junior rendszerüzemeltető
- 2025-02-19 Junior szoftvertesztelő
- 2025-02-19 Junior rendszerüzemeltető