Passer au contenu

Comment supprimer les offres d'emploi d'Indeed (le guide complet 2024)

Indeed s'est imposé comme le site d'emploi n°1 face à des concurrents comme Monster et CareerBuilder en seulement 5 ans après son lancement en 2004. Aujourd'hui, Indeed compte plus de 250 millions de visiteurs uniques par mois qui consultent sa base de données de centaines de millions d'offres d'emploi à travers le monde.

Avec ce volume de données, il n'est pas surprenant que les recruteurs, les chercheurs et autres utilisateurs expérimentés souhaitent extraire et analyser les informations sur les listes à grande échelle. Indeed fournit une API, mais elle est soumise à des limites quotidiennes strictes qui empêchent de collecter des données complètes. C’est là qu’un web scraping diligent et éthique s’avère utile !

Dans ce guide complet de plus de 2,500 XNUMX mots, nous aborderons différents outils et techniques pour récupérer les offres d'emploi Indeed en utilisant le point de vue d'un expert chevronné en matière de web scraping.

Avant de passer aux procédures, il est important que nous considérions la légalité et l'éthique du web scraping Indeed pour les offres d'emploi.

Légalité

La légalité du web scraping tombe dans une zone grise dans de nombreuses juridictions. Il y a quelques facteurs clés à garder à l’esprit :

  • Droits d’auteur – Supprimez uniquement les données factuelles, et non le contenu original substantiel protégé par le droit d’auteur. La reproduction de grandes parties de descriptions d’annonces ou de profils d’entreprises ne peut être autorisée sans autorisation.

  • Violations des conditions d'utilisation – Récupérer des données d'une manière qui viole les conditions d'utilisation d'un site (comme l'ingénierie inverse, les demandes excessives) peut être problématique et entraîner des litiges (comme dans le cas de Facebook contre Power Ventures). Les conditions d'utilisation d'Indeed permettent le scraping pour des cas d'utilisation personnels et non commerciaux.

  • Règlements – Tenez compte des réglementations régionales en matière de confidentialité telles que le RGPD et le CCPA, qui limitent la récupération des données personnelles des utilisateurs sans consentement pour les résidents de l'UE et de Californie, respectivement.

  • CFAA – La loi sur la fraude et les abus informatiques a été utilisée pour poursuivre les scrapers accédant aux données de sites après la révocation de l'autorisation, comme dans le cas de LinkedIn vs HiQ. Scraper un site entièrement public comme Indeed est plus sûr.

Bien que la plupart des scrapers ne rencontreront pas de problèmes juridiques s'ils récupèrent des volumes raisonnables de données publiques dans leur ensemble, assurez-vous de consulter un avocat pour obtenir des conseils juridiques sur votre cas d'utilisation spécifique et votre juridiction, juste pour être en sécurité !

Ethique

Au-delà de la pure légalité, il est important de gratter de manière éthique. Voici quelques conseils:

  • Ne collectez que les données dont vous avez une utilisation légitime. Supprimer les emplois auxquels vous envisagez de postuler est une bonne chose ; gratter des millions de CV simplement parce que vous le pouvez est contraire à l’éthique.

  • Utilisez la limitation et les proxys pour éviter de surcharger les serveurs et de dégrader les performances du site. Une attaque de type DDoS créée par des demandes de scraping excessives est contraire à l’éthique.

  • Respectez les directives robots.txt qui interdisent le scraping sur certains sites. Par exemple, LinkedIn et Monster demandent à ne pas être supprimés.

  • N'essayez jamais de récupérer des données personnelles privées telles que des profils d'utilisateurs ou des CV sans autorisation.

  • Ne republiez pas systématiquement à grande échelle du contenu protégé par le droit d’auteur sans autorisation pour le faire.

En résumé, grattez consciencieusement. Indeed est un site Web public qui n'interdit pas le scraping dans le fichier robots.txt, mais veillez à collecter les données de manière éthique. Voyons maintenant comment gratter !

Supprimer les listes Indeed avec Python et Selenium

Sélénium est un framework d'automatisation de navigateur populaire pour le web scraping Python. En contrôlant par programme un véritable navigateur Web comme Chrome, vous pouvez reproduire les actions de l'utilisateur telles que la recherche, le clic sur des éléments et l'extraction de données à partir de pages chargées.

Passons en revue un script Python pour récupérer les résultats des tâches sur Indeed à l'aide de Selenium :

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import json

driver = webdriver.Chrome()

driver.get(‘https://www.indeed.com‘) 

# Search for jobs
search_box = driver.find_element(By.NAME,‘q‘)
search_box.send_keys(‘data scientist‘)

location_box = driver.find_element(By.NAME, ‘l‘)
location_box.send_keys(‘san francisco‘)

search_box.submit()

# Wait for results to load
WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, ‘mosaic-provider-jobcards‘))
)

# Extract data from each result 
results = []

job_cards = driver.find_elements(By.CLASS_NAME,‘jobsearch-SerpJobCard‘)
for job in job_cards:

    title = job.find_element(By.CLASS_NAME, ‘title‘).text

    company = job.find_element(By.CLASS_NAME, ‘company‘).text

    location = job.find_element(By.CLASS_NAME, ‘location‘).text

    summary = job.find_element(By.CLASS_NAME, ‘summary‘).text

    post_date = job.find_element(By.CLASS_NAME, ‘date‘).text

    result = {
        ‘title‘: title,
        ‘company‘: company,
        ‘location‘: location, 
        ‘summary‘: summary,
        ‘post_date‘: post_date
    }

    results.append(result)

# Save data 
with open(‘results.json‘, ‘w‘) as f:
    json.dump(results, f)

driver.quit()

Voici quelques étapes clés de ce script :

  • Nous utilisons les webdriver.Chrome() Pilote Selenium pour lancer Chrome sans tête.

  • Les termes de recherche sont saisis et soumis sur la page d'accueil d'Indeed.

  • Nous attendons le #mosaic-provider-jobcards élément à charger avant d’extraire les données.

  • Nous localisons les éléments par nom de classe et extrayons le texte de chacun dans un dict.

  • Enfin, les résultats structurés sont enregistrés dans un fichier JSON.

Cela permet d'atteindre les bases de la suppression des listes Indeed avec Selenium. Si vous souhaitez aller plus loin :

  • Grattez des champs supplémentaires tels que le salaire, la description, la note de l'entreprise, etc.

  • Utilisez des attentes explicites comme WebDriverWait au lieu de time.sleep() pour plus de fiabilité.

  • Tirez parti des sélecteurs CSS et XPath pour localiser précisément les éléments.

  • Exportez les données récupérées vers une base de données ou un point de terminaison d'API au lieu de simplement des fichiers JSON.

Dans l’ensemble, Selenium fournit un moyen pratique d’automatiser les navigateurs pour le web scraping. Mais il peut avoir des difficultés avec de gros volumes de pages en raison de la surcharge des performances du navigateur. Pour un grattage à grande échelle, nous recommandons…

Scraper en effet à grande échelle avec Scrapy

Scrapy est un framework de scraping Web dédié pour Python optimisé pour explorer de nombreuses pages rapidement et efficacement.

Par rapport au Selenium, Scrapy présente certains avantages :

  • Supprime la surcharge liée au lancement de vrais navigateurs – effectue des requêtes directement.

  • L'architecture asynchrone récupère simultanément de nombreuses pages plus rapidement.

  • Prise en charge intégrée de la pagination, de la limitation, de la mise en cache, etc.

  • Plus de flexibilité pour une logique de scraping complexe avec des rappels personnalisés.

Voici un exemple d'araignée Indeed avec Scrapy :

import scrapy

class IndeedSpider(scrapy.Spider):
    name = ‘indeed‘
    allowed_domains = [‘indeed.com‘]

    def start_requests(self):
       yield scrapy.Request(
           url=‘https://www.indeed.com‘, 
           callback=self.search
        )

    def search(self, response):
        search_box = response.css(‘[name=q]‘)
        search_box.set(‘data scientist‘)

        location_box = response.css(‘[name=l]‘) 
        location_box.set(‘san francisco‘)

        search_box.xpath(‘./following::button[1]‘).click()

        yield scrapy.Request(
           url=response.url,
           callback=self.parse_results,
        )

    def parse_results(self, response):
        for job in response.css(‘#mosaic-provider-jobcards .jobsearch-SerpJobCard‘):
             yield {
                ‘title‘: job.css(‘.title::text‘).get(),
                ‘company‘: job.css(‘.company::text‘).get(),
                # Other fields scraped
             }

        next_page = response.css(‘.pagination a::attr(href)‘).get()
        if next_page:
            yield scrapy.Request(
                response.urljoin(next_page),
                callback=self.parse_results
            ) 

Points clés:

  • Des règles comme allowed_domains et les robots.txt la conformité garantit un grattage en toute sécurité.

  • Nous localisons les champs du formulaire par CSS et simulons la soumission de la recherche.

  • Le parse_results() La méthode produit des données extraites de chaque liste.

  • Suivre les liens de pagination permet de parcourir plusieurs pages.

  • Les tâches sont exportées au format JSON structuré par défaut.

Pour des analyses encore plus importantes, nous pouvons configurer les éléments suivants dans settings.py:

  • DOWNLOAD_DELAY et les AUTOTHROTTLE_ENABLED pour limiter les demandes.

  • HTTPCACHE_ENABLED pour mettre en cache les requêtes et minimiser les hits.

  • RETRY_TIMES pour réessayer les chargements de pages ayant échoué.

  • RANDOM_PROXY d'un pool pour empêcher les blocages IP.

Avec toutes ses fonctionnalités intégrées, Scrapy est idéal pour explorer les offres d'emploi Indeed à grande échelle. Mais ce n'est que la première étape : pour obtenir des informations, nous devons analyser les données.

Analyser les offres d'emploi Indeed avec BigQuery et Python

Une fois récupérées, les données de travail Indeed deviennent plus utiles lorsqu'elles sont structurées et analysées à grande échelle. Certaines options de stockage populaires incluent :

  • Bases de données SQL comme Postgres pour les requêtes structurées
  • Bases de données NoSQL comme MongoDB pour un stockage JSON flexible
  • Entrepôts de données comme BigQuery pour l'analyse à grande échelle

Passons en revue un exemple de flux de travail pour analyser nos listes supprimées avec BigQuery:

  1. Après le scraping, importez les résultats JSON dans un ensemble de données BigQuery. Scrapy Cloud s'intègre bien ici.

  2. Créez une table avec un mappage de schéma comme title STRING, company STRING, location STRING et ainsi de suite

  3. Exécutez des requêtes SQL pour analyse :

-- Top companies hiring
SELECT company, COUNT(1) 
FROM `indeed.listings`
GROUP BY company
ORDER BY COUNT(1) DESC
LIMIT 10

-- Average salary by job title  
SELECT title, AVG(salary)
FROM `indeed.listings` 
GROUP BY title
ORDER BY AVG(salary) DESC
  1. Visualisez des insights avec Data Studio ou connectez BigQuery à des outils Python tels que Pandas pour une analyse plus approfondie :
import pandas as pd

df = pd.read_gbq(‘‘‘
  SELECT title, AVG(salary) as avg_salary
  FROM `indeed.listings`
  GROUP BY title
  ORDER BY avg_salary DESC
‘‘‘)

# Visualize average salary by title
ax = df.plot.barh(x=‘title‘, y=‘avg_salary‘, rot=0)

Cela donne un aperçu des analyses puissantes possibles avec les données Indeed récupérées. La clé est de le présenter dans un format tel qu'un entrepôt de données qui permet à la fois des requêtes SQL pour une analyse structurée et des connexions aux capacités de visualisation et de modélisation de Python.

Gratter légalement et éthiquement

En conclusion, récapitulons quelques directives clés concernant les pratiques juridiques et éthiques lors du scraping d'Indeed ou de tout autre site Web :

  • Respecter les droits d'auteur – Ne supprimez systématiquement que les données purement factuelles, et non le contenu original substantiel. Une préséance juridique est toujours en train de s’établir dans ce domaine émergent.

  • Suivre les conditions d'utilisation – Respectez les conditions de service d'Indeed et évitez tout scraping excessif susceptible de dégrader les performances du site.

  • Limiter la collecte de données – Collectez uniquement le minimum de données nécessaires à vos besoins plutôt que d’aspirer toutes les annonces.

  • Anonymiser les données personnelles – Évitez de supprimer des CV ou des profils d’utilisateurs identifiables qui pourraient enfreindre les règles de confidentialité.

  • Vérifiez le fichier robots.txt – Le robots.txt d'Indeed autorise le scraping mais certains sites comme LinkedIn l'interdisent.

  • Utiliser la limitation – Limitez les taux de requêtes et activez les délais pour minimiser la charge du serveur. Répartissez la charge sur les adresses IP.

Le respect de ces limites éthiques peut fournir des informations utiles d'Indeed sans nuire au site ou à ses utilisateurs. Nous espérons que ce guide vous fournira à la fois les outils et l’état d’esprit éthique nécessaires pour gratter de manière responsable !

Prendre part à la conversation

Votre adresse email n'apparaitra pas. Les champs obligatoires sont marqués *