Scraping Indeed : champs, pages et doublons
Conservez champs, identifiants de source et heure d’observation. Comparez données structurées et annonces rendues sans confondre absence et fermeture.
BotBrowser Team
Vous voulez la documentation structurée pour Déploiement ?
Cet article fait partie de la bibliothèque éditoriale. Pour les étapes de configuration, la référence et les mises à jour continues, passez directement à la section docs.
Le scraping des offres Indeed exige une source autorisée avant qu’un parseur ou navigateur produise des données utiles. Titre, organisation, lieu, dates et identité nécessitent un contrat de champs ; des pages changeantes doivent aussi distinguer répétitions et emplois différents. Les mêmes questions concernent une source LinkedIn autorisée, mais les pages visibles ne donnent aucune permission générale de collecte. BotBrowser fournit des paramètres déclarés de région et de session ; il n’accorde pas l’accès aux plateformes, ne fournit pas les annonces et ne garantit pas un ordre stable. Préservez ce que la source établit et séparez champs absents ou absence dans une liste des faits d’emploi.
Résumé
- Vérifiez conditions applicables et source réellement autorisée. Visibilité et balisage ne constituent pas une permission générale.
- Définissez chaque champ requis, sa source et le sens de son absence avant d’analyser cartes ou détails.
- JobPosting est un vocabulaire, pas une preuve de champs ou balisage précis dans une réponse Indeed ou LinkedIn.
- Un exemple construit de liste changeante montre répétitions ou omissions avec décalage. Il ne prouve l’implémentation d’aucune plateforme.
- Dédupliquez par identité propre à la source, conservez l’historique et exigez des preuves distinctes avant de conclure à une fermeture.
Sommaire
- Établir l’accès permis
- Définir le contrat de champs
- Séparer observations structurées et rendues
- Expliquer le chevauchement avec une liste de test
- Dédupliquer sans fusionner des emplois différents
- Séparer disparition et fermeture
- Conclusion pratique
Établir l’accès permis
Les conditions Indeed traitent directement l’accès automatisé. La disposition exige une permission écrite expresse et comporte un droit conditionnel de parcours limité au fichier robots. Lisez le périmètre applicable sans en faire une licence générale de réutilisation. Autoriser un type de parcours n’établit pas une autre finalité, interface ou consultation de compte. Identifiez une intégration approuvée, un flux ou une observation expressément permise avant le parseur. La comparaison des données de lieux Google Maps applique un autre contrat : champs demandés, identifiants modifiables et limites de rétention restent distincts des observations d’interface. Le modèle des annonces immobilières distingue l’annonce du bien et compare les prix demandés à devise et sens de transaction identiques ; une carte absente ne prouve pas une vente. Le modèle d’ingestion des emplois sépare champs bruts et normalisés, occurrences de publication et issues d’observation, afin qu’un repost ou une carte absente ne devienne pas une clôture inventée.
Le contrat LinkedIn interdit séparément logiciels, scripts et autres moyens automatisés pour extraire ou copier le service, ainsi que l’accès automatisé non autorisé. Ne supposez ni conditions identiques à Indeed ni exception liée à une annonce lisible. Sans permission requise, utilisez une source approuvée ou retournez la limite. Aucun contournement de connexion, collecteur de profils candidats ou changement d’identité après refus n’est nécessaire à cette décision.
RFC 9309 précise que robots n’est pas une autorisation d’accès. Une disposition contractuelle peut renvoyer à des conditions robots, comme celle d’Indeed ; il faut lire son texte et ses limites plutôt qu’attribuer des droits au standard. Conservez fondement du permissionnement et périmètre des données séparément. Une réponse HTTP réussie n’établit pas des droits de redistribution ou de conservation. Lisibilité technique et usage approuvé restent distincts.
L’analyse de la couche navigateur des sites d’emploi couvre les limites générales. Le contrat de champs ajoute une question après approbation : qu’établit cette observation permise sur l’annonce ? Précisez flux approuvé, échantillon fourni ou page autorisée séparément. Notez ce choix sans état de compte réutilisable. Si la source ne répond pas au champ requis, retournez les preuves manquantes plutôt que d’utiliser l’automatisation comme permission alternative.
Définir le contrat de champs
Le vocabulaire JobPosting définit titre, organisation, lieu et date de publication. Il aide à décrire le résultat sans garantir tous les champs sur une plateforme. Définissez chaque exigence et sa source réelle. Titre de carte, employeur de détail et date structurée restent des observations séparées tant que leur appartenance à la même annonce n’est pas établie. Ne les joignez pas seulement parce que le texte paraît plausible.
| Groupe | Preuves à conserver | Limite d’interprétation |
|---|---|---|
| Identité | Espace de noms et identifiant réel disponible | Un titre n’est ni identifiant ni clé mondiale de poste |
| Rôle et organisation | Titre et organisation attribués | Un nom similaire ne prouve pas la même annonce |
| Lieu | Localisation observée et télétravail explicite | La région du navigateur n’est pas le lieu d’emploi |
| Publication et validité | Date et validité fournies | Heure de collecte n’est ni publication ni fermeture |
| Rémunération et type | Montant, devise, période et type fournis | Salaire absent n’est pas zéro ; une fourchette n’est pas un montant fixe |
| Provenance | Représentation, heure et résultat de collecte | Échec d’actualisation n’est pas changement d’emploi |
La référence du schéma définit datePosted comme publication d’une annonce en ligne et validThrough comme fin de validité. Séparez-les de l’heure du collecteur. Une annonce découverte aujourd’hui peut être ancienne ; sans validité fournie, la valeur est inconnue. N’inventez pas d’échéance à partir de la dernière observation ou d’une durée habituelle supposée.
Le lieu exige le même soin. jobLocation et jobLocationType existent dans le vocabulaire, mais ne sont pas établis par la région du navigateur. Conservez la déclaration réelle, dont le télétravail explicitement indiqué, sans convertir un lieu absent en éligibilité mondiale. Le système d’observation utilisé pour les prix sépare source et analyse. Gardez sens et inconnues à cette frontière pour éviter des valeurs inventées dans salaires, géographie ou âge des annonces.
Chaque ligne est une exigence applicative, pas une affirmation sur la sortie actuelle d’Indeed ou LinkedIn. Si un champ obligatoire manque, gardez un résultat incomplet ou refusez-le selon la règle documentée. Une information facultative absente n’invalide pas tout usage. Distinguez valeur absente à la source, tentative de lecture échouée et valeur réellement modifiée. Ces issues ne doivent pas devenir une même chaîne vide dans les données acceptées.
Séparer observations structurées et rendues
Le guide JobPosting de Google demande aux éditeurs de placer les données sur la page spécifique d’un seul emploi avec sa description visible. Il ne prouve pas un objet complet sur chaque page de résultats. Une liste autorisée peut offrir une carte résumée et le détail permis davantage d’informations. Établissez la représentation reçue avant de conclure qu’un champ absent de la carte manque à l’emploi.
La référence script type de MDN décrit des blocs non exécutables avec un type MIME adapté autre que JavaScript. Cela explique un mécanisme, sans prouver qu’une réponse Indeed ou LinkedIn le contient, est complète ou actuelle. Une réponse sauvegardée autorisée établit la présence dans cette observation. Sans preuve supplémentaire, l’attribution doit s’arrêter là.
Si l’échantillon contient données structurées et contenu rendu, gardez les types de source plutôt que choisir silencieusement le champ le plus facile. Un titre structuré peut différer d’une carte abrégée sans signaler un autre poste. Une expression salariale peut contenir un contexte perdu par extraction du seul montant. Déterminez la valeur répondant au contrat et gardez la correspondance. Si les représentations ne se réconcilient pas, marquez non résolu au lieu d’assembler un résultat apparemment complet.
Le vocabulaire JobPosting guide le sens d’une propriété réelle, pas les sélecteurs de plateforme. N’en déduisez ni interface privée, identifiant caché ou HTML stable. Pour modifier un parseur autorisé, gardez un échantillon minimal expurgé et sa règle, sans informations de comptes ou candidats étrangères à la tâche. Un changement de représentation exige version et validation du parseur, pas une variation inexpliquée des statistiques.
Le rendu sert à observer texte ou état nécessaires à la question approuvée et absents de la réponse permise. Il ne répare pas seul une valeur indisponible. Si le champ reste sans attribution au poste, notez la limite. Le navigateur établit l’état autorisé observé pendant cette exécution, pas couverture universelle, permission d’élargir la collecte ou exactitude de tous les champs.
Expliquer le chevauchement avec une liste de test
Une pagination par décalage peut se chevaucher si la liste ordonnée change entre observations. C’est une propriété de l’exemple construit, pas une mesure d’Indeed ou LinkedIn. Il suppose trois entrées par page et une insertion avant la deuxième requête. Les lettres représentent des identités d’une liste maîtrisée, pas des annonces réelles. L’objectif est de séparer position et identité avant la déduplication.
| Étape | Liste ordonnée | Page observée | Conséquence |
|---|---|---|---|
| Requête initiale | A, B, C, D, E, F | A, B, C | Trois identités sur la première page |
| Insérer X en tête | X, A, B, C, D, E, F | Pas encore demandée | Les positions se décalent |
| Décalage suivant | X, A, B, C, D, E, F | C, D, E | C se répète malgré la progression |
C répété n’est pas un nouvel emploi, et sa seconde occurrence n’est pas nécessairement inutile. C’est une autre observation ultérieure de la même identité. Une suppression analogue pourrait sauter une entrée non observée. Achever une série de requêtes ne prouve donc pas un instantané stable. Cela ne démontre aucun décalage, ordre fixe ou curseur d’instantané compatible sur les plateformes.
Le contrat de pagination dépend de la source. Le guide JobPosting de Google décrit des détails individuels, pas une navigation universelle. Utilisez le modèle documenté de l’intégration approuvée s’il existe. Sans garantie d’instantané, décrivez une séquence temporelle d’observations. Réessais, région fixe ou nombre de résultats affiché ne créent ni garantie ni population vérifiée.
Dans un test maîtrisé, contrôlez identités et heures, pas seulement les lignes. L’insertion synthétique doit produire une identité répétée avec deux observations, pas deux postes. Une entrée absente d’une liste ultérieure reste non observée, pas automatiquement fermée. Séparez exemple et interprétation attendue des preuves de production. La règle reste testable sans affirmation sur des services protégés ni données réelles de candidats.
Dédupliquer sans fusionner des emplois différents
Si la source autorisée fournit un identifiant utilisable, combinez espace de noms et identifiant. C’est une règle applicative, pas une disponibilité promise partout. La définition d’identifiant JobPosting est générale, pas une identité mondiale de poste employeur. Conservez source et sémantique réelles au lieu d’attribuer une clé commune à tous les titres et organisations similaires.
Le rapprochement entre plateformes est une autre inférence. Un employeur peut réutiliser des titres, publier des rôles similaires ou recruter dans plusieurs lieux. Deux enregistrements proches ne prouvent pas une seule vacance distribuée. Conservez leurs identités de source même si une analyse propose ensuite une correspondance. Gardez preuve et incertitude plutôt qu’éliminer une source avant de définir doublon. Identité de publication et emploi réel répondent à des questions distinctes.
Sans identifiant fiable, une URL attribuée peut servir de référence candidate selon sa sémantique. Ne supprimez pas paramètres ou morceaux de chemin sans preuve d’absence de rôle identitaire. Si aucune référence n’établit une clé stable, utilisez une identité provisoire et l’incertitude. Une empreinte de description mutable aide à comparer, mais texte modifié ne signifie pas nouvel emploi ; texte identique ne prouve pas une seule annonce.
Le système commun d’observation peut séparer entités et historique. Dédupliquez les occurrences sous la clé source en conservant heure, représentation et issue. L’exemple produit une entité C, deux observations. Une nouvelle description sous cette clé est une révision à examiner, pas automatiquement un emploi nouveau. Une actualisation échouée reste un incident de collecte, sans remplacer la description acceptée par du vide.
Les paramètres du navigateur ne fournissent pas l’identité. La documentation géographique BotBrowser définit prérequis de profil, réglages automatiques dérivés du proxy et dérogations manuelles exigeant ENT Tier1. Ce sont des entrées pour une observation régionale autorisée, pas une preuve de lieu, classement stable ou identité entre sessions. Si une observation est exécutée, séparez paramètres prévus et preuve de chargement. Les règles ne revendiquent aucun essai sur plateforme réelle.
Séparer disparition et fermeture
Une annonce absente peut signifier liste modifiée, page non atteinte, réponse incomplète ou annonce non retournée. L’absence ne choisit pas l’explication. Les conditions Indeed réservent explicitement l’exclusion ou la suppression des résultats : l’inclusion ne garantit pas le cycle de vie. Le guide JobPosting de Google offre plusieurs options d’expiration : validThrough passé, retrait de page avec statut indisponible ou retrait du balisage. Cela ne prouve pas une application immédiate ou identique partout.
Conservez les preuves de cycle de vie avec leur portée. Une fermeture explicitement annoncée diffère d’une carte introuvable. Une validité passée a le sens donné par la source ; une erreur de transport n’a pas de sens d’emploi équivalent. Définissez les preuves acceptées pour un état fermé et gardez inconnu si elles manquent. Refus, délai dépassé ou parcours incomplet ne prouvent pas qu’un poste est pourvu.
La gestion de dérive doit distinguer représentation, champs, occurrences et cycle de vie. Comparez les échantillons permis au contrat avant de modifier le parseur. Le vocabulaire du schéma conserve publication et validité ; le collecteur définit observation et traitement. Retraiter un échantillon historique est un nouveau traitement, pas une nouvelle observation d’emploi actif. Évitez qu’une réparation donne l’apparence de nouvelles collectes aux anciens postes.
Les conditions Indeed ne garantissent pas non plus exactitude ou disponibilité du contenu employeur. Une source autorisée n’est pas une garantie de vérité sous-jacente. La provenance distingue déclaration source et interprétation. Publiez une observation comparable suffisamment étayée ou conservez sa limite concrète. Configuration, rendu réussi et nombre de pages achevé ne remplacent pas ces preuves.
Questions fréquentes
JobPosting prouve-t-il le balisage d’une plateforme ?
Non. Il définit le vocabulaire. Seule la réponse autorisée établit présence de la représentation et des champs dans l’observation.
Une annonce répétée sur une autre page est-elle nouvelle ?
Pas selon sa position seule. Utilisez l’identité source et conservez chaque heure ; le rapprochement entre plateformes reste une autre inférence.
Une annonce absente peut-elle être immédiatement fermée ?
Pas sur cette seule base. Absence, collecte échouée et preuves de cycle de vie exigent des états distincts.
Changer de région navigateur stabilise-t-il les résultats ?
Non. Cela change des entrées, pas le contrat d’ordre ou l’identité. Lieu et cycle de vie exigent des preuves de source.
Sources
- Schema.org : JobPosting
- Google : données structurées JobPosting
- MDN : script type
- BotBrowser : fuseau, région et langue
- RFC 9309 : Robots Exclusion Protocol
- LinkedIn : contrat utilisateur
- Indeed : conditions
Conclusion pratique
Choisissez une source autorisée, définissez les champs et séparez identité de publication, position de page et rapprochement de postes entre plateformes. Conservez provenance structurée ou rendue, heure et inconnues. BotBrowser fournit des paramètres déclarés ; la source doit établir faits d’emploi et accès applicable. Traitez le chevauchement comme observations répétées et exigez des preuves de cycle de vie avant de conclure à une fermeture.
Cet article fait partie du guide : Déploiement et livraison du navigateur : carte opérationnelle
Articles Connexes
Scraping d’offres d’emploi : limites du navigateur
DéploiementScraping d’offres d’emploi : titres, reposts et clôture
DéploiementGoogle Maps : Places API ou listes affichées ?
DéploiementScraping Amazon : données et limites du navigateur
DéploiementZillow scraping : identifiants, prix et historique
DéploiementProtection des empreintes du navigateur pour la collecte web
Exécutez la même vérification dans BotBrowser
Chargez un profil, gardez dans le navigateur les signaux que vous venez de lire, puis confirmez le résultat sur votre propre machine avant le déploiement.