top of page
Vyhledat

Web Scraping pro analýzu pracovních nabídek

Obrázek autora: srnamatejsrnamatej

Prohlášení o vyloučení odpovědnosti: V tomto příspěvku sdílím své potřebné znalosti, není zde uvedeno, že můj kód je osvědčený postup. Jsem stále v procesu učení.


Když jsem se rozhodoval, do jakého projektu bych se měl pustit, abych si rozšířil své znalosti a dovednosti, uvědomil jsem si, že datovou vědu lze využít mnoha způsoby. Zatímco jsem procházel všechny nápady, přemýšlel jsem, jaké dovednosti bych měl mít a vyžadovat, abych byl schopen tyto projekty realizovat.


Najednou mě napadlo, že bych měl provést analýzu dovedností, které bych měl mít, a také toho, jaké dovednosti zaměstnavatelé vyžadují od datových vědců.


Pro tuto analýzu jsem potřeboval aktuální surová data, abych se ujistil, že informace v pracovních nabídkách jsou aktuální. K vyžádání těchto dat jsem použil metodu web scrapingu.


Webové stránky lze rozdělit do dvou skupin na statické a dynamické. Statické webové stránky se skládají z HTML (Hypertext Markup Language) a CSS (Cascading Style Sheets). Dynamické webové stránky se skládají z jazyka JavaScript. Dynamické webové stránky se samy často mění a mohou se přizpůsobovat, a to automaticky.


HTML (HyperText Markup Language) je nejzákladnějším stavebním prvkem webu. Definuje význam a strukturu obsahu webu. K popisu vzhledu/prezentace webové stránky (CSS) nebo funkčnosti/chování (JavaScript) se kromě jazyka HTML obvykle používají další technologie.

Web Scraping:

Jedná se o metodu získávání informací z webových stránek HTML. Tuto metodu lze použít, pokud webová stránka neposkytuje rozhraní API (Application Programming Interface), které umožňuje získat data strukturovaným způsobem na základě požadavku.


Pro Web Scraping jsem použil knihovnu Pythonu s názvem Beautiful Soup 4. Tato knihovna používá parser, který pomáhá při navigaci a vyhledávání klíčových prvků, které jsem zadal pro získání potřebných dat. Pro tento projekt jsem použil html.parser jazyka Python.


Pro web scraping se v některých článcích doporučuje Selenium a jeho Webdriver, který k procházení webových stránek využívá webový prohlížeč. Po nějaké době pátrání v článcích pro Web Scraping jsem však zjistil, že většina uživatelů doporučuje knihovnu Request, která umožňuje získávat data z webových stránek a vyhnout se problémům s JavaScriptem. Z tohoto důvodu jsem se rozhodl použít knihovnu Request.


Nakonec jsem musel určit, které prvky pracovních nabídek jsou relevantní pro mou budoucí analýzu. Určitě jsem hledal název pracovní pozice, název společnosti, čas, kdy byla pracovní pozice na LinkedIn zveřejněna, typ zakázky, místo výkonu práce, popis požadavků na pracovní pozici, odkazy na konkrétní pracovní pozici a nakonec jsem přidal datum, abych měl jistotu, že mohu sledovat své výstřižky.


HTML používá značky a já jsem musel najít ty správné s konkrétními ID, zadat je pro BeautifulSoup, který najde správnou značku a získá text z této části webu.


HTML používá "značkování" k anotaci textu, obrázků a dalšího obsahu pro zobrazení ve webovém prohlížeči. Značky HTML zahrnují speciální "prvky", jako např. <head>, <title>, <body>, <header>, <footer>, <article>, <section>, <p>, <div>, <span>, <img>, <aside>, <audio>, <canvas>, <datalist>, <details>, <embed>, <nav>, <output>, <progress>, <video>, <ul>, <ol>, <li> a mnoho dalších.

Níže uvedený příklad ukazuje značky z jedné nabídky práce na LinkedIn. Jak můžete vidět, webová stránka je rozdělena na jednotlivé prvky, jako je div s třídou top-card-layout__entity-info-container flex flex-wrap atd.

V nadpisu <h1> je uveden název pracovní pozice (Staff Data Scientist), který je pro mou analýzu zásadní.


<div class="top-card-layout__entity-info-container flex flex-wrap papabear:flex-nowrap">
<div class="top-card-layout__entity-info flex-grow flex-shrink-0 basis-0 babybear:flex-none babybear:w-full babybear:flex-none babybear:w-full">
<h1 class="top-card-layout__title font-sans text-lg papabear:text-xl font-bold leading-open text-color-text mb-0 topcard__title">Staff Data Scientist </h1>
<!-- -->
<!-- -->
<h4 class="top-card-layout__second-subline font-sans text-sm leading-open text-color-text-low-emphasis mt-0.5">

DOPORUČENÍ:


Pracovní nabídky na LinkedIn zobrazují pouze 25 pracovních míst na stránku vyhledávání. Proto jsem musel udělat seznam vyhledávacích stránek, abych se ujistil, že každý den získám data více než 25 pracovních míst, a pak jsem ve smyčce přes tyto stránky iteroval, abych získal odkazy na skutečné pracovní pozice, a pak jsem provedl skutečný web scraping, abych získal informace.


Pro strukturování těchto dat jsem použil slovník, který jsem pomocí Pandas transformoval do DataFrame. Poté je snadné uložit data do CSV (Comma-separated values). Oddělená surová data jsem si také každý den nechával získat pro případ, že bych udělal nějakou chybu a potřeboval data obnovit. V poslední části kódu jsem vytvořil jeden velký soubor se souhrnnými daty, který sloučil všechna surová data CSV.


Tento skript lze upravit (zvýšit počet úloh, které se každý den seškrábou) a je opakovaně použitelný - to znamená, že tento kód mohu umístit na webové stránky a nechat ho provádět denně.

Zde sdílím odkaz na svůj Github, pokud se chcete podívat na můj kód.


Doufejme, že tento článek pomůže i ostatním, kteří se chtějí o datové vědě dozvědět více.


 

Matěj Srna




6 zobrazení0 komentářů

Nejnovější příspěvky

Zobrazit vše

Comments

Rated 0 out of 5 stars.
No ratings yet

Add a rating
bottom of page