Ez a projekt informatikai álláshirdetések automatizált gyűjtésére, feldolgozására és elemzésére készült.
A rendszer web scraping segítségével álláshirdetéseket gyűjt különböző állásportálokról, majd a hirdetések szöveges leírását mesterséges intelligencia segítségével strukturált adatformátumba alakítja. Az így kapott adatok később statisztikai elemzésre és grafikonok készítésére használhatók.
A projekt célja annak vizsgálata, hogy az informatikai álláshirdetésekben milyen technológiák, programozási nyelvek, nyelvi követelmények, tapasztalati szintek és munkavégzési formák jelennek meg leggyakrabban.
- álláshirdetések gyűjtése web scraping segítségével,
- hirdetések alapadatainak mentése CSV formátumban,
- hirdetések teljes szövegének mentése TXT fájlokba,
- mesterséges intelligencia alapú információkinyerés,
- Gemini API és lokálisan futtatott modellek támogatása,
- feldolgozott CSV fájlok egyesítése,
- adatok normalizálása,
- statisztikai kimutatások és grafikonok készítése.
A projekt Python nyelven készült. A főbb használt könyvtárak:
requests– weboldalak lekérésére,beautifulsoup4– HTML tartalom feldolgozására,pandas– CSV fájlok és táblázatos adatok kezelésére,matplotlib– grafikonok készítésére,tqdm– feldolgozási folyamat kijelzésére,google-genai– Gemini API használatához,ollama– lokális nyelvi modellek Pythonból történő futtatásához.
A projekt futtatásához Python szükséges.
Ajánlott verzió: Python 3.10 vagy újabb.
Python letöltése:
https://www.python.org/downloads/
A telepítés után ellenőrizhető:
python --versionA szükséges könyvtárak telepíthetők a következő paranccsal:
pip install requests beautifulsoup4 pandas matplotlib tqdm google-genai ollamaA Gemini API használatához Google AI Studio API kulcs szükséges.
Google AI Studio:
https://aistudio.google.com/
Az API kulcsot környezeti változóként kell beállítani.
Windows PowerShell-ben:
$env:GEMINI_API_KEY="SAJAT_API_KULCS"Linux / macOS alatt:
export GEMINI_API_KEY="SAJAT_API_KULCS"A lokális nyelvi modellek futtatásához Ollama szükséges.
Ollama letöltése:
https://ollama.com/download
Telepítés után ellenőrizhető:
ollama --versionA használt modellek letöltése például:
ollama pull qwen2.5:7b-instruct
ollama pull mistral-nemo
ollama pull llama3.1A lokális modellek futtatása több memóriát és számítási kapacitást igényelhet. Lassabb gépen a feldolgozás jelentősen hosszabb ideig tarthat.
A mellékelt projekt így épül fel:
Job-scraper/
│
├── Profesia_scraper.py
├── Profesia_false_check.py
├── profession_scraper.py
├── cvonline_scraper.py
│
├── CSV/
│ ├── professia_jobs.csv
│ ├── profession_jobs.csv
│ ├── cvonline_jobs.csv
│ ├── Gemini_api.py
│ ├── LocalLM.py
│ └── Processed_csv/
│ ├── profesia_gemini.csv
│ ├── profession_gemini.csv
│ ├── cvonline_gemini.csv
│ └── ...
│
├── Analyze/
│ ├── Merge.py
│ ├── Analyzer.py
│ └── Analyzed/
│ ├── all_programming_languages.csv
│ ├── all_tools.csv
│ ├── all_human_languages.csv
│ ├── all_experience_levels.csv
│ ├── all_work_arrangement.csv
│ ├── all_job_types.csv
│ ├── all_locations.csv
│ ├── all_programming_languages.png
│ ├── all_tools.png
│ └── ...
│
└── Raw text/
├── job_id_1.txt
├── job_id_2.txt
└── ...
A fő mappában találhatók a scraping scriptek. Ezek felelősek az álláshirdetések begyűjtéséért az egyes állásportálokról.
A CSV mappa tartalmazza a scraperek kimeneteit, vagyis az állásportálokról kinyert alapadatokat CSV formátumban.
Ebben a mappában találhatók az AI-feldolgozást végző scriptek is:
Gemini_api.py– Gemini API-val történő feldolgozás,LocalLM.py– lokális modellekkel történő feldolgozás.
Ezek kimenetei a Processed_csv mappába kerülnek.
A Processed_csv mappa tartalmazza a mesterséges intelligencia által feldolgozott CSV fájlokat.
Ezek már strukturált adatokat tartalmaznak, például:
- munkavégzés helye,
- fizetés,
- nyelvi követelmények,
- programozási nyelvek,
- használt eszközök és technológiák,
- munkavégzés módja,
- tapasztalati szint.
Az Analyze mappában találhatók az elemzéshez kapcsolódó scriptek:
Merge.py– a feldolgozott CSV fájlok egyesítésére szolgál,Analyzer.py– az adatok normalizálását, összesítését és vizualizációját végzi.
Az Analyzed mappa tartalmazza az elemzés eredményeit:
- összesítő CSV fájlokat,
- diagramokat PNG formátumban.
A Raw text mappába kerülnek az álláshirdetések teljes szöveges leírásai TXT fájlokként.
A fájlnevek az álláshirdetések egyedi azonosítója (job_id) alapján készülnek.
Ez azért hasznos, mert így a hirdetés teljes szövege akkor is visszakereshető marad, ha az eredeti álláshirdetés később már nem érhető el az adott portálon.
A scraperek külön-külön futtathatók az egyes portálokhoz.
Példa:
python professia_scraper.pypython profession_scraper.pypython cvonline_scraper.pyA futtatás után létrejönnek vagy frissülnek a CSV mappában található CSV fájlok, valamint a Raw text mappában a hirdetések teljes szövegét tartalmazó TXT fájlok.
A Profesia_false_check.py kiegészítő scriptként volt használatos. Feladata, hogy a korábban inaktívként jelölt Profesia hirdetések URL-jeit újra ellenőrizze, és frissítse azok állapotát, azonban erre már nincs szükség.
A Gemini API használata előtt be kell állítani a GEMINI_API_KEY környezeti változót.
Ezután futtatható:
python Gemini_api.pyA script beolvassa a scraping során létrehozott CSV fájlt, feldolgozza a hirdetések leírását, majd a strukturált adatokat a Processed_csv mappába menti.
A lokális feldolgozás előtt telepíteni kell az Ollamát, majd le kell tölteni a használni kívánt modellt.
Példa:
ollama pull qwen2.5:7b-instructEzután futtatható:
python LocalLM.pyA használt modell a scriptben a model_name változó módosításával állítható be.
Példa:
model_name = "qwen2.5:7b-instruct"Másik modell használatához a változó értékét kell módosítani, például:
model_name = "mistral-nemo"Az elemzés előtt a CSV/Processed_csv mappából át kell másolni vagy át kell helyezni azokat a feldolgozott CSV fájlokat az Analyze mappába, amelyeket elemezni szeretnénk.
Például:
CSV/Processed_csv/profesia_gemini.csv -> Analyze/profesia_gemini.csv
CSV/Processed_csv/profession_gemini.csv -> Analyze/profession_gemini.csv
CSV/Processed_csv/cvonline_gemini.csv -> Analyze/cvonline_gemini.csv
Az AI által feldolgozott CSV fájlok egyesítéséhez az Analyze mappában található Merge.py script futtatása szükséges.
python Merge.pyEz létrehozza az egyesített adatállományt, például:
all_jobs_with_source.csv
Ebben az állományban már szerepel a source oszlop is, amely megmutatja, hogy az adott hirdetés melyik portálról származik.
Az elemzéshez az Analyzer.py script futtatása szükséges:
python Analyzer.pyA script elvégzi:
- az adatok normalizálását,
- gyakorisági kimutatások készítését,
- forrásonkénti összesítést,
- grafikonok generálását.
Az eredmények az Analyzed mappába kerülnek.
- A weboldalak HTML struktúrája idővel változhat, ezért előfordulhat, hogy a scraperek később módosítást igényelnek.
- A mesterséges intelligencia által előállított eredmények információs jellegűek, és kisebb pontatlanságokat tartalmazhatnak.
- A lokális modellek lassabban futnak, és nagyobb hardverigényük lehet.
- A Gemini API használatához internetkapcsolat és érvényes API kulcs szükséges.
- A lokális modellek használatához az Ollama telepítése és a modellek előzetes letöltése szükséges.
1. Scraper futtatása
2. Gemini vagy lokális AI feldolgozás
3. Az elemzendő CSV fájlok átmásolása
4. Feldolgozott CSV fájlok egyesítése
5. Elemzés és grafikonok generálása
A projekt célja annak bemutatása, hogy web scraping és mesterséges intelligencia segítségével nagy mennyiségű informatikai álláshirdetés automatizáltan feldolgozható és elemezhető. Az így létrejött adathalmaz alkalmas munkaerőpiaci trendek vizsgálatára, valamint az informatikai területen történő sikeres elhelyezkedéshez szükséges készségek és technológiák azonosítására.
A projekt oktatási célból, szakdolgozat részeként készült.