Web Scraping voor vacatures - Een Ultieme Gids voor 2023
post-titel

Web Scraping voor vacatures is een alternatieve snelkoppeling voor werkzoekenden om een database van actuele vacatures aan te leggen. Randstad zegt dat de gemiddelde zoektocht naar een baan vijf tot zes maanden kan duren, vanaf het moment dat er wordt gesolliciteerd tot het moment dat een functie wordt ingevuld. Wat als je een oplossing hebt die de last van het surfen door alle vacatureportalen en het kiezen van de juiste die bij je past kan verminderen? 

Dit artikel zal u meenemen op een reis waarin wordt uitgelegd hoe u web scraping kunt doen voor vacatures. Dus, je bent op de arbeidsmarkt en probeert de beste baan te vinden. Maar je wilt het slimmer spelen en niet harder. Waarom bouwt u geen web scraper om vacatures voor u te verzamelen en te parsen. Zodra u het instelt, zal het u voorzien van gegevensrijkdom in een mooi opgeruimd formaat, zodat u het niet steeds opnieuw handmatig hoeft te controleren. Laten we aan de slag gaan.

Wat is Web Scraping voor vacatures?

Web scraping voor vacatures is de oplossing die automatisch gegevens van meerdere vacatureportalen verzamelt en uw tijd vermindert bij het ophalen van gegevens van elke website. Met een dergelijke tool die u een volledige database van vacatures kan bieden, wordt uw taak veel eenvoudiger. Het enige wat u hoeft te doen is filteren welke u past en doorgaan met het sollicitatieproces. 

Dus, je bent op de arbeidsmarkt en probeert de beste baan te vinden. Maar u wilt het slimmer spelen en niet harder. Waarom bouwt u geen web scraper die vacatures voor u verzamelt en parseert? Als je het eenmaal hebt ingesteld, zal het je voorzien van gegevensrijkdom in een mooi opgeruimd formaat, zodat je het niet steeds opnieuw handmatig hoeft te controleren. Laten we aan de slag gaan.

[Disclaimer! Veel websites kunnen het scrapen van gegevens van hun pagina's beperken. Gebruikers kunnen worden onderworpen aan juridische problemen, afhankelijk van waar en hoe ze proberen de informatie eruit te halen. Men moet dus uiterst voorzichtig zijn bij het bekijken van sites die hun gegevens opslaan. Facebook, Linked In en Craiglist zijn bijvoorbeeld soms boos als gegevens van hun pagina's worden gescrapt. Dus als u wilt scrapen, doe dat dan op eigen risico].

Dit zal een zeer eenvoudig artikel zijn waarin we de basis van web scraping zullen zien door wat nuttige informatie over banen gerelateerd aan "Data Science" uit indeed.com te halen. We zullen een geweldig programma schrijven dat de vacatures meerdere keren handmatig bijwerkt. Enkele nuttige bibliotheken die erg handig zullen zijn tijdens het bouwen van deze scraper zijn "requests" en "BeautifulSoup."

De URL en paginastructuur begrijpen

Laten we eerst eens kijken naar de voorbeeldpagina die we er inderdaad uit gaan halen. 

De manier waarop de URL is gestructureerd is belangrijk:

  • let op "q=" begint de string voor het "wat" veld op de pagina, en scheidt zoektermen met "+" (dus zoeken naar "data+wetenschapper" banen)
  • wanneer het salaris wordt opgegeven, wordt het geparseerd door komma's in het salariscijfer, dus het begin van het salaris wordt voorafgegaan door %24 en dan het getal voor de eerste komma, het wordt dan onderbroken door %2C en gaat verder met de rest van het getal (dus %2420%2C000 = $20.000)
  • opmerking "&l=" begint de string voor de gewenste stad, waarbij zoektermen worden gescheiden door "+" als de stad uit meer dan één woord bestaat (bijv. "New+York.").
  • let op "&start=" noteert het zoekresultaat waar u wilt beginnen (d.w.z. begin bij het 10e resultaat)

Deze URL-structuur zou ons enorm helpen bij het verder bouwen van de scraper en het verzamelen van gegevens van meerdere pagina's. 

Web Scraping voor vacatures - De URL en paginastructuur begrijpen

Chrome kan de HTML-structuur van de pagina onderzoeken door er met de rechtermuisknop op te klikken en de optie inspect element te gebruiken. Rechts verschijnt dan een menu, en dat toont ook de geneste elemententags, en als u uw cursor op die elementen zet, wordt dat gedeelte gemarkeerd.  

Webscraping voor vacatures

Voor dit artikel veronderstel ik dat je de basis van HTML kent, zoals tags, divs, enz., maar gelukkig hoef je niet alles te weten. Je hoeft alleen maar de paginastructuur en de hiërarchie van de verschillende onderdelen te begrijpen.

Aan de slag met de krabber

Nu hebben we de paginastructuur geanalyseerd. Dit zal ons helpen code te bouwen volgens die informatie om de gegevens van onze keuze eruit te halen. Laten we beginnen met het importeren van onze bibliotheken. Merk op dat we hier ook "tijd" importeren, wat nuttig zal zijn om de server van de site niet te overstelpen bij het schrapen van informatie.

import verzoeken
import bs4
van bs4 importeert BeautifulSoup
importeer pandas als pd
import tijd

We zullen ons eerst richten op de enkele pagina om elk stukje informatie dat we willen in te trekken,

URL = "https://www.indeed.com/jobs?q=data+scientist+%2420%2C000&l=New+York&start=10"
#een aanvraag doen van de bovenstaande URL
page = requests.get(URL)
#het gewenste formaat van "page" specificeren met de html-parser - hierdoor kan python de verschillende onderdelen van de pagina lezen, in plaats van deze te behandelen als één lange string.
soep = BeautifulSoup(page.text, "html.parser")
#print soep in een meer gestructureerde boomstructuur die het lezen vergemakkelijkt
print(soup.prettify())

Het gebruik van prettify maakt het gemakkelijker om een overzicht te hebben van de HTML-codering van een pagina en levert output als deze,

Webscraping voor vacatures - Code
Webscraping voor vacatures - Aan de slag

 Nu staat alle informatie over onze interessante pagina in onze variabele "soep". We moeten verder graven in de code om de verschillende tags en sub-tags te doorlopen om de vereiste informatie vast te leggen.

Basiselementen van gegevens verkrijgen

Vijf belangrijke punten voor elke vacature zijn,

  1. Functieomschrijving.
  2. Bedrijfsnaam.
  3. Locatie.
  4. Salaris.
  5. Job Summary.

Als we de pagina bekijken, zijn er 15 vacatures. Daarom zou onze code ook 15 verschillende items moeten genereren. Als de code er echter minder oplevert, kunnen we teruggaan naar de pagina en zien wat er niet wordt vastgelegd.

Job titel krijgen

As can be seen, the entirety of each job posting is under <div> tags, with an attribute “class” = “row result.”

Further, we could also see that job titles are under <a> tags, with the attribute “title = (title)”. One can see the value of the tag’s attribute with tag[“attribute”], so I can use it to find each posting’s job title.

Samengevat omvat de functie die we gaan zien de volgende drie stappen,

  1. Pulling out all the <div> tags with class including “row”.
  2. Identifying <a> tags with attribute “data-tn-element”:”jobTitle”
  3. For each of these <a> tags, find attribute values “title”
def extract_job_title_from_result(soup): 
  jobs = []
  for div in soup.find_all(name="div", attrs={"class":"row"}):
    for a in div.find_all(name="a", attrs={"data-tn-element":"jobTitle"}):
      jobs.append(a["title"])
  return(jobs)
extract_job_title_from_result(soup)

Deze code zal een output als deze opleveren,

Web Scraping voor vacatures - Verkrijg de titel van de baan

Bedrijfsnaam krijgen

Getting company names can be a bit tricky because most of them are appearing in <span> tags, with “class”:” company”.  They are also housed in <span> tags with “class”:” result-link-source”.

We zullen if/else-statements gebruiken om de bedrijfsinformatie uit elk van deze plaatsen te halen. Om de witruimtes rond de bedrijfsnamen te verwijderen wanneer ze worden uitgevoerd, gebruiken we aan het eind inputting.strip().

def extract_company_from_result(soup): 
 companies = []
 for div in soup.find_all(name="div", attrs={"class":"row"}):
   company = div.find_all(name="span", attrs={"class":"company"})
   if len(company) > 0:
    for b in company:
     companies.append(b.text.strip())
   else:
    sec_try = div.find_all(name="span", attrs={"class":"result-link-source"})
    for span in sec_try:
      companies.append(span.text.strip())
 return(companies)
 
extract_company_from_result(soup)
Web Scraping voor vacatures - Bedrijfsnaam krijgen

Locatie krijgen

Locations are located under the <span> tags. Span tags are sometimes nested within each other, such that the location text may sometimes be within “class”:”location” attributes, or nested in “itemprop”:”addressLocality”. However a simple for loop can examine all span tags for text and retrieve the necessary information.

def extract_location_from_result(soup): 
  locations = []
  spans = soup.findAll('span', attrs={'class': 'location'})
  for span in spans:
    locations.append(span.text)
  return(locations)
extract_location_from_result(soup)
Webscraping voor vacatures - Zoek Locatie

Salaris krijgen

Het salaris is het moeilijkste deel om uit vacatures te halen. De meeste vacatures publiceren helemaal geen salarisinformatie, terwijl andere die dat wel doen, op meerdere plaatsen te vinden zijn. We moeten dus een code schrijven die meerdere salarissen van verschillende plaatsen kan ophalen, en als er geen salaris wordt gevonden, moeten we een plaatshouder "Niets gevonden" creëren voor alle vacatures die geen salaris bevatten. 

Some salaries are under <nobr> tags, while others are under <div> tags, “class”:”sjcl” and are under separate div tags with no attributes. Try/except statement can be helpful while extracting this information. 

def extract_salary_from_result(soup): 
  salaries = []
  for div in soup.find_all(name="div", attrs={"class":"row"}):
    try:
      salaries.append(div.find('nobr').text)
    except:
      try:
        div_two = div.find(name="div", attrs={"class":"sjcl"})
        div_three = div_two.find("div")
        salaries.append(div_three.text.strip())
      except:
        salaries.append("Nothing_found")
  return(salaries)
extract_salary_from_result(soup)
Web Scraping voor vacatures - Ontvang salaris

Joboverzicht krijgen

De laatste taak is het verkrijgen van de vacature-samenvatting. Het is echter niet mogelijk om de vacature-samenvattingen voor elke specifieke vacature te krijgen, omdat ze niet zijn opgenomen in de HTML van een bepaalde Indeed-pagina. We kunnen wat informatie over elke vacature krijgen van wat er wordt aangeboden. Hiervoor kunnen we Selenium gebruiken.

But let’s first try this using python. Summaries are located under <span> tags. Span tags are nested within each other such that the location text is within “class”:” location” tags or nested in “itemprop”:” adressLocality”. However, using a simple for loop can examine all span tags for text to retrieve the necessary information.

Webscraping voor vacatures - Krijg een vacatureoverzicht

Vaak gestelde vragen

1. Waarom is het nodig om job details te scrapen?

Er zijn genoeg vacatureportalen die u op de hoogte kunnen brengen van de vacatures die bij uw profiel passen. Toch zal een job scraping oplossing je een volledige lijst van jobs en de beschrijving ervan bezorgen als een handige database. Zo krijg je een beter zicht op alle vacatures op één plaats. 

2. Hoe kan een proxy helpen bij het schrapen van vacaturegegevens? 

Web scraping heeft meestal bepaalde uitdagingen zoals IP-blokkades, geo-blokkades en beperkte snelheid. Het scrapen van jobs van job portals zal ook dergelijke uitdagingen hebben. Om al deze problemen te omzeilen, kan proxy adressen u helpen met IP-adressen van de gewenste locatie en zorgen voor anonimiteit.

3. Wat zijn de python-bibliotheken die nodig zijn om taakgegevens te scrapen?

Requests, BeautifulSoup en Pandas zijn vrij gebruikelijke python-bibliotheken om werkgerelateerde gegevens van websites te scrapen. Request bibliotheek is de meest gebruikte python bibliotheek om webverzoeken te versturen, terwijl BeautifulSoup verantwoordelijk is voor het parsen van gegevens, en Pandas bibliotheek zal helpen met de gegevensstructuur operaties. 

Gerelateerde artikelen

Hoe Twitter te scrapen met Python

Hoe Instagram te scrapen met Python

Hoe Reddit te schrapen met Python

Inpakken

In dit artikel hebben we gezien wat web scraping is en hoe het nuttig kan zijn in ons dagelijks leven aan de hand van een praktisch voorbeeld van het schrapen van vacaturegegevens van webpagina's van Indeed. Houd er rekening mee dat de resultaten die u krijgt anders kunnen zijn dan deze, omdat de pagina's dynamisch zijn, dus de informatie verandert met de tijd. 

Web Scraping is een ongelooflijke techniek, mits goed uitgevoerd en volgens uw eisen. We hebben verder de belangrijke vijf aspecten van elke vacature gezien en hoe je die eruit kunt halen. Als u deze code zelf uitprobeert, hebt u gegevens van vacatures geschraapt en hoeft u niet handmatig naar de vacatures te zoeken, wat geweldig is. Dezelfde techniek kan ook worden toegepast op andere webpagina's, maar hun structuur kan verschillen. Daarom moet je je code daarop afstemmen. Maar alle basisprincipes zijn in dit artikel behandeld, dus er zou geen enkel probleem zijn om ook andere pagina's te schrapen.

Als u op zoek bent naar proxy diensten, vergeet dan niet te kijken naar ProxyScrape residentiële en premium proxies.