Meteen naar de inhoud

Uw stapsgewijze handleiding voor het verzamelen van gegevens uit Indeed

Hallo daar! Wilt u vacatures van Indeed schrapen? U bent hier aan het juiste adres.

Indeed is een van de grootste vacaturesites op internet, met meer dan 250 miljoen unieke bezoekers per maand. Dat is een enorme hoeveelheid gegevens over vacatures, salarissen, bedrijfsprofielen en meer.

Helaas geven de API's van Indeed niet al deze gegevens volledig vrij. Dat is waar webscraping in beeld komt.

In deze handleiding laat ik u stap voor stap zien hoe u Indeed kunt schrapen met Python. Ik deel codefragmenten die je kunt gebruiken, samen met tips om nauwkeurig te scrapen en te voorkomen dat je wordt geblokkeerd.

Ik zal ook bespreken hoe je scraping kunt automatiseren om dagelijks, wekelijks of maandelijks uit te voeren. Op die manier kunt u uw vacaturegegevens automatisch actueel houden!

Tegen het einde zul je vacatures op Indeed als een professional doornemen. Laten we erin graven!

Waarom Indeed-vacatures schrappen?

Voordat we onze handen vuil maken aan wat Python-code, laten we het eerst hebben over Waarom Misschien wilt u in de eerste plaats gegevens uit Indeed schrapen.

Hier zijn slechts enkele ideeën:

  • Marktonderzoek – Analyseer trends in vacatures om de toenemende vraag naar vaardigheden of rollen te identificeren. Heeft inderdaad gegevens over miljoenen van vacatures in alle sectoren.

  • Competitieve intelligentie – Bekijk welke salarissen en voordelen bedrijven bieden voor vergelijkbare functies. Handig bij het benchmarken van uw eigen beloningspakketten.

  • Zoekmachines voor vacatures – Bouw aangepaste vacaturesites met behulp van Indeed-gegevens die zijn gefilterd op specifieke trefwoorden of locaties.

  • Rekruteringsinstrumenten – Volg nieuwe vacatures die overeenkomen met de vaardigheden van kandidaten om relevante vacatures naar boven te halen.

  • Hervat analyse – Haal trefwoorden en vaardigheden uit functiebeschrijvingen om suggesties te geven voor het verbeteren van cv's en sollicitatiebrieven.

Dit zijn slechts enkele voorbeelden – met rijke gestructureerde gegevens over vacatures zijn de mogelijkheden eindeloos!

Laten we nu eens kijken hoe we die gegevens daadwerkelijk kunnen extraheren met behulp van webscraping.

Voordat ik in de codering duik, wil ik snel ingaan op de legaliteit van webscrapen. Ik weet dat sommige mensen zich hier zorgen over maken.

Het korte antwoord is: openbare gegevens van Indeed schrapen is dat wel volkomen legaal in de meeste gevallen, zolang u zich aan enkele basisregels houdt:

  • Krijg alleen toegang tot openbare pagina's. Probeer geen privégebruikersgegevens of logins te verzamelen.

  • Overbelast de servers van Indeed niet door te agressief te scrapen. Volg beleefde kruippraktijken.

  • Houd u aan de Servicevoorwaarden van Indeed. Ze verbieden webscraping niet specifiek.

  • Vermijd het letterlijk kopiëren van grote tekstfragmenten om het auteursrecht te respecteren. Parafraseren is oké.

  • Publiceer geen geschraapte privé-, persoonlijke of gevoelige gegevens opnieuw.

Als u deze richtlijnen met gezond verstand volgt, is webscrapen van gegevens van openbare vacatures in de meeste landen wettelijk toegestaan.

Natuurlijk raad ik nog steeds aan om een ​​advocaat te raadplegen als u zich zorgen maakt, aangezien de wetten variëren. Maar u kunt Indeed met vertrouwen schrappen, zolang u maar ethisch blijft!

Oké, laten we in de leuke dingen duiken: echte code!

Indeed-vermeldingen schrapen met Python

Bij het schrapen van grote sites zoals Indeed is Python een goede keuze dankzij bibliotheken zoals Aanvragen, Mooie soep en Selenium.

Ik zal je door een script leiden om:

  • Extraheer vacatures die overeenkomen met zoekopdrachten op trefwoorden en locaties

  • Parseer details zoals functietitels, salarissen en beschrijvingen

  • Automatiseer paginering om alle vermeldingen op meerdere pagina's op te halen

Laten we beginnen!

Bibliotheken importeren

We zullen gebruiken Aanvragen pagina's ophalen, Mooie soep voor het ontleden, Tijd gas geven, en Pandas gegevens opslaan:

import requests
from bs4 import BeautifulSoup
import time
import pandas as pd

Verzoeken en BeautifulSoup zijn allemaal van jou werkelijk behoefte. Maar Pandas helpt bij het beheren van gegevens, terwijl Time verzoeken beperkt.

Zoekparameters definiëren

Laten we eerst definiëren welke vacatures we willen. Specificeer trefwoorden, locatie en andere filters:

keywords = "Remote Software Engineer"
location = "United States" 
salary_min = 100000

Dit richt zich op goedbetaalde softwarebanen op afstand in de VS. Pas het aan uw gewenste criteria aan.

Zoekresultatenpagina ophalen

Als de parameters zijn ingesteld, vragen we de URL op, waarbij we onze trefwoorden en locatie doorgeven:

BASE_URL = "https://www.indeed.com/jobs?" 

params = {
  ‘q‘: keywords,
  ‘l‘: location,
  ‘minSalary‘: salary_min,
  ‘remotejob‘: ‘remote‘ # Filter remote jobs  
}

print(f‘Fetching job listings for {keywords} in {location}...‘)

res = requests.get(BASE_URL, params=params)
res.raise_for_status() # Raise exception for 4xx/5xx

Hiermee wordt de initiële zoekopdracht uitgevoerd, waarbij wordt gefilterd op onze trefwoorden en parameters.

Parseer de resultaten met BeautifulSoup

Vervolgens parseren we de HTML van de zoekresultatenpagina om vermeldingsgegevens op hoog niveau te extraheren:

soup = BeautifulSoup(res.text, ‘html.parser‘)

listings = [] # List to store listings

for div in soup.find_all(‘div‘, class_=‘job_seen_beacon‘):

  title = div.find(‘h2‘).text.strip()

  company = div.find(‘span‘, class_=‘companyName‘).text.strip()

  location = div.find(‘div‘, class_=‘companyLocation‘).text.strip()

  # Append listing data    
  listings.append({
    ‘title‘: title,
    ‘company‘: company, 
    ‘location‘: location
  })

Hier vinden we elke vermelding div, pak de belangrijkste velden zoals titel en bedrijf en sla deze op in onze listings lijst.

Behandel paginering

Verdeelt de resultaten inderdaad over meerdere pagina's. We moeten elk doorlopen:

# Track page number 
current_page = 0

while True:

  # Increment page
  current_page += 1 

  print(f‘Scraping page {current_page}...‘)

  # Build URL for next page
  next_page_url = BASE_URL + f‘&start={current_page*10}‘  

  # Fetch page HTML
  res = requests.get(next_page_url, params=params)

  # Parse HTML
  soup = BeautifulSoup(res.text, ‘html.parser‘)   

  # Return if last page
  if not soup.find(‘a‘, {‘aria-label‘: ‘Next‘}):
    print(‘Reached last page!‘)
    break

  # Extract listings
  for div in soup.find_all(...):
    # Extract listing data

  # Sleep to throttle requests  
  time.sleep(3) 

print(f‘Scraped {len(listings)} listings‘)

Hier verhogen we voortdurend het paginanummer, halen de volgende pagina op, extraheren lijsten en herhalen totdat we de laatste pagina bereiken.

Een korte toevoeging time.sleep() Throttle helpt voorkomen dat de servers van Indeed overbelast raken.

Lijstdetails schrapen

Tot nu toe hebben we gegevens op hoog niveau verzameld, zoals titels en bedrijven. Om details zoals salarissen en beschrijvingen te krijgen, schrapen we elke vermeldings-URL:

from selenium import webdriver

driver = webdriver.Chrome()

# Loop through listings
for listing in listings:

  print(f‘Getting details for {listing["title"]}‘)

  # Load listing URL
  url = listing[‘url‘]  
  driver.get(url)

  # Extract key fields
  desc = driver.find_element_by_id(‘jobDescriptionText‘).text
  salary = driver.find_element_by_class_name(‘salary-snippet‘).text

  listing[‘desc‘] = desc
  listing[‘salary‘] = salary

  # Sleep to throttle
  time.sleep(2)

driver.quit()  

Hier biedt Selenium een ​​volledige browser om JavaScript-zware pagina's weer te geven. We laden elke URL en extraheren aanvullende velden zoals de beschrijving en het salaris.

Pro Tip: Overweeg om een proxy-service om IP-blokkeringen te voorkomen bij gebruik van Selenium op grote schaal.

En dat is het! Met deze stappen kunt u automatisch duizenden vacatures uit Indeed schrapen.

Het eindresultaat zijn gestructureerde vacaturegegevens die u kunt analyseren of exporteren naar tools zoals Excel. Laten we hierna een paar voorbeelden bekijken.

Wat kunt u doen met geschrapte Indeed-gegevens?

Nu we Indeed-vermeldingen kunnen verzamelen, wat kunnen we eigenlijk met die gegevens doen?

Hier zijn slechts enkele ideeën:

Exporteren naar Excel voor analyse

df = pandas.DataFrame(listings)
df.to_excel(‘indeed_listings.xlsx‘, index=False)

Pandas maakt het eenvoudig om resultaten naar Excel te exporteren. Dit maakt krachtige filters, draaitabellen en formules mogelijk.

Gegevens inderdaad in Excel

U kunt trends op verschillende locaties, salarissen, vaardigheden en meer analyseren.

Bouw databases voor het zoeken naar vacatures

import sqlite3

# Connect to SQLite database
conn = sqlite3.connect(‘jobs.db‘)

# Create table
conn.execute(‘‘‘
  CREATE TABLE jobs (
    title TEXT,
    company TEXT, 
    description TEXT,
    salary REAL  
  );
‘‘‘)

# Insert listings into database
for listing in listings:
  conn.execute("""
    INSERT INTO jobs VALUES (
      ?, ?, ?, ?
    )""", (listing[‘title‘], listing[‘company‘], 
            listing[‘desc‘], listing[‘salary‘]))

conn.commit()
conn.close()

SQLite biedt een eenvoudige database om vermeldingen op te slaan voor aangepaste zoekopdrachten. Integreer met Flask om uw eigen vacaturesite te bouwen!

E-mail relevante vermeldingen naar kandidaten

import smtplib
from email.message import EmailMessage

# Connect to SMTP server 
smtp = smtplib.SMTP(‘smtp.domain.com‘)

for listing in listings:

  # Check if listing matches candidate skills  

  if match:

    msg = EmailMessage()
    msg[‘Subject‘] = f‘New job for you - {listing["title"]}‘  
    msg[‘From‘] = ‘[email protected]‘
    msg[‘To‘] = ‘[email protected]‘
    msg.set_content(listing[‘desc‘])

    # Send listing to candidate
    smtp.send_message(msg)

smtp.quit()

Python maakt het gemakkelijk om kandidaten automatisch nieuwe aanbiedingen te e-mailen die aansluiten bij hun vaardigheden en interesses.

Dit is slechts een klein voorbeeld. Met gegevens over miljoenen vermeldingen zijn de mogelijkheden eindeloos!

Laten we nu eens kijken hoe deze schraper automatisch wordt uitgevoerd.

Dagelijkse Indeed Scrapes plannen

Hoewel het nuttig is om Indeed in realtime te schrappen, is het opzetten nog waardevoller geautomatiseerde, geplande scrapes om uw gegevens actueel te houden.

Hier zijn twee goede opties om de scraper volgens een vast terugkerend schema uit te voeren:

cron Jobs

Een eenvoudige manier om Python-scripts te automatiseren is cron, een standaard Linux-hulpprogramma.

Voeg een item als dit toe om dagelijks om 8 uur te starten:

0 8 * * * python /home/user/indeedScraper.py

U kunt complexe herhalingen plannen. Maar cron mist rapportage als scrapes mislukken.

Schraapplatforms

Voor een robuustere planning en automatisering raad ik aan een speciaal scrapingplatform zoals Scrapy or Apify.

Deze bieden browser- en proxy-automatisering voor het verwerken van CAPTCHA's, blokken en JavaScript. En ze hebben een eenvoudige cron-taakplanning ingebouwd.

U ontvangt ook e-mailwaarschuwingen, prestatieanalyses en integratieopties. Ze nemen echt de hoofdpijn uit de automatisering!

Hier is een snelle vergelijking:

cron JobsSchraapplatforms
PrijzenGratisBetaalde abonnementen
Proxy's en headless browsersAangepaste code nodigInbegrepen functies
SchedulerFundamentele herhalinggeavanceerde opties
Controle en waarschuwingenGeenE-mails en dashboard
ResultatenopslagHandmatige bedieningIngebouwde opslag en export

Voor grote, complexe sites zoals Indeed raad ik aan een speciaal platform te gebruiken. De extra betrouwbaarheid en functies zijn de kosten waard bij het schrapen op schaal.

Laten we samenvatten

In deze handleiding heb je geleerd:

  • Waarom scraping Indeed is handig voor marktonderzoek, zoeken naar werk en rekruteringstools.

  • Hoe werkt het? vermeldingen uitpakken door zoekopdrachten in Python na te bootsen.

  • Beste praktijken zoals het beperken van verzoeken en het gebruik van proxy's om blokkades te voorkomen.

  • Hoe werkt het? details analyseren zoals salarissen en beschrijvingen van vermeldingspagina's.

  • Automatiseringsopties zoals cron en speciale scrapingplatforms om uw gegevens actueel te houden.

De bovenstaande codevoorbeelden zouden u een sjabloon moeten bieden waarmee u uw eigen Indeed-gegevens kunt verzamelen. Voel je vrij om het aan te passen en erop voort te bouwen voor jouw gebruiksscenario!

Vergeet niet om de Servicevoorwaarden van Indeed te respecteren, te agressieve scraping te vermijden en een goede webscraping-hygiëne te volgen om aan de goede kant van de wet te blijven.

Ik hoop dat deze gids je een uitgebreid overzicht heeft gegeven van hoe je Indeed effectief kunt schrapen met Python. Door deze stappen te automatiseren, kunt u gebruikmaken van de enorme hoeveelheid vacaturegegevens van Indeed.

Laat het me weten als je nog vragen hebt! Ik praat altijd graag verder over de beste praktijken op het gebied van webscrapen.

Veel succes met uw Indeed-scraping-project!

Doe mee aan het gesprek

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd *