? Voici les possibilités qui s'offrent à vous :","Crunchbase","A propos de nous","Merci à tous pour votre formidable soutien !","Liens rapides","Programme d'affiliation","Prime","ProxyScrape essai premium","Vérificateur de procuration en ligne","Types de mandataires","Pays mandataires","Cas d'utilisation du proxy","Important","Politique en matière de cookies","Clause de non-responsabilité","Politique de confidentialité","Conditions d'utilisation","Médias sociaux","Facebook","LinkedIn","Twitter","Quora","Télégramme","Discord","\n © Copyright 2024 - Thib BV | Brugstraat 18 | 2812 Mechelen | Belgique | VAT BE 0749 716 760\n"]}
La recherche d'offres d'emploi sur le web est un autre moyen pour les demandeurs d'emploi de créer une base de données d'offres d'emploi actuelles. Randstad indique que la recherche d'emploi moyenne peut durer de cinq à six mois, entre le moment où une candidature est déposée et celui où le poste est pourvu. Et si vous aviez une solution pour réduire votre charge de travail ?
La recherche d'offres d'emploi sur le web est un autre moyen pour les demandeurs d'emploi de créer une base de données d'offres d'emploi actuelles. Selon Randstad, la recherche d'emploi moyenne peut durer de cinq à six mois, entre le moment où une candidature est déposée et celui où le poste est pourvu. Et si vous disposiez d'une solution qui vous soulagerait du fardeau de naviguer sur tous les portails d'emploi et de choisir celui qui vous convient le mieux ?
Cet article vous fera voyager en vous expliquant comment faire du web scraping pour les offres d'emploi. Vous êtes sur le marché du travail et vous essayez de trouver le meilleur emploi. Mais vous voulez jouer plus intelligemment et non pas plus durement. Pourquoi ne pas construire un scraper web qui collecterait et analyserait les offres d'emploi pour vous. Une fois que vous l'aurez configuré, il vous fournira des données riches dans un format bien ordonné, de sorte que vous n'aurez pas à les vérifier manuellement encore et encore. Commençons.
Le web scraping pour les offres d'emploi est une solution qui permet de collecter automatiquement des données à partir de plusieurs portails d'emploi et de réduire le temps nécessaire à la collecte des données sur chaque site web. Disposer d'un tel outil qui peut vous fournir une base de données complète des offres d'emploi vous simplifiera la tâche à bien des égards. Il ne vous reste plus qu'à filtrer les offres qui vous conviennent et à poursuivre le processus de candidature.
Vous êtes sur le marché du travail et vous essayez de trouver le meilleur emploi. Mais vous voulez jouer plus intelligemment et non pas plus durement. Pourquoi ne pas créer un scraper web qui collecterait et analyserait les offres d'emploi pour vous ? Une fois que vous l'aurez configuré, il vous fournira des données riches dans un format bien ordonné, de sorte que vous n'aurez pas à les vérifier manuellement encore et encore. Commençons.
[Avertissement ! De nombreux sites web peuvent restreindre l'extraction de données de leurs pages. Les utilisateurs peuvent être confrontés à des problèmes juridiques en fonction de l'endroit et de la manière dont ils tentent d'extraire les informations. Il convient donc d'être extrêmement prudent lorsque l'on consulte des sites qui hébergent leurs données. Par exemple, Facebook, Linked In et Craiglist sont parfois mécontents si des données sont extraites de leurs pages. Donc, si vous voulez faire du scraping, faites-le à vos risques et périls].
Il s'agit d'un article très basique dans lequel nous verrons les bases du web scraping en extrayant quelques informations utiles concernant les emplois liés à la "Data Science" sur indeed.com. Nous écrirons un programme étonnant qui met à jour les offres d'emploi plusieurs fois manuellement. Quelques bibliothèques utiles qui seront très pratiques lors de la construction de ce scraper sont "requests" et "BeautifulSoup".
Tout d'abord, jetons un coup d'œil à la page d'exemple que nous allons extraire d'En effet.
La façon dont l'URL est structurée est importante :
Cette structure d'URL nous sera d'une aide précieuse lorsque nous continuerons à construire le scraper et à collecter des données à partir de plusieurs pages.
Chrome peut examiner la structure HTML de la page en faisant un clic droit sur celle-ci et en utilisant l'option inspecter l'élément. Un menu apparaît sur la droite, qui affiche également les balises des éléments imbriqués. Lorsque vous placez votre curseur sur ces éléments, cette partie de l'écran est mise en surbrillance.
Pour cet article, je suppose que vous connaissez les bases du HTML comme les balises, les divs, etc. mais heureusement vous n'avez pas besoin de tout savoir. Il vous suffit de comprendre la structure de la page et la hiérarchie des différents composants.
Nous avons maintenant analysé la structure de la page. Cela nous aidera à construire du code en fonction de ces informations pour extraire les données de notre choix. Commençons par importer nos bibliothèques. Notez qu'ici nous importons également "time", ce qui nous aidera à ne pas surcharger le serveur du site lors de l'extraction d'informations.
importer des demandes
import bs4
from bs4 import BeautifulSoup
import pandas as pd
import time
Nous allons d'abord cibler la page unique pour en retirer chaque élément d'information que nous voulons,
URL = "https://www.indeed.com/jobs?q=data+scientist+%2420%2C000&l=New+York&start=10"
#réaliser une requête sur l'URL indiqué ci-dessus :
page = requests.get(URL)
#spécifier le format désiré de "page" en utilisant l'analyseur html - cela permet à python de lire les différents composants de la page, plutôt que de la traiter comme une longue chaîne de caractères.
soup = BeautifulSoup(page.text, "html.parser")
#impression de la soupe dans un format arborescent plus structuré qui facilite la lecture
print(soup.prettify())
L'utilisation de Prettify permet d'avoir une vue d'ensemble du codage HTML de la page et fournit un résultat comme celui-ci,
Désormais, toutes les informations relatives à la page qui nous intéresse se trouvent dans notre variable "soup". Nous devons creuser davantage dans le code pour itérer à travers les différentes balises et sous-balises afin de capturer les informations requises.
Les cinq points clés de chaque offre d'emploi sont les suivants
Titre du poste.Nom de l'entreprise.Lieu.Salaire.Résumé du poste.
Si nous jetons un coup d'œil à la page, nous constatons qu'il y a 15 offres d'emploi. Par conséquent, notre code devrait également générer 15 éléments différents. Toutefois, si le code en fournit moins, nous pouvons nous référer à la page et voir ce qui n'a pas été capturé.
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.
En résumé, la fonction que nous allons voir comporte les trois étapes suivantes,
Pulling out all the <div> tags with class including “row”.Identifying <a> tags with attribute “data-tn-element”:”jobTitle”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)
Ce code produira un résultat comme celui-ci,
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”.
Nous utiliserons des instructions if/else pour extraire les informations sur les entreprises de chacun de ces endroits. Afin de supprimer les espaces blancs autour des noms d'entreprises lors de leur sortie, nous utiliserons inputting.strip() à la fin.
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)
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)
Le salaire est l'élément le plus difficile à extraire des offres d'emploi. La plupart des offres d'emploi ne publient pas du tout d'informations sur le salaire, tandis que celles qui le font peuvent le trouver à plusieurs endroits. Nous devons donc écrire un code capable d'extraire plusieurs salaires à plusieurs endroits et, si aucun salaire n'est trouvé, nous devons créer une valeur "Rien trouvé" pour les offres d'emploi qui ne contiennent pas de salaire.
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)
La dernière tâche consiste à obtenir le résumé du poste. Cependant, il n'est pas possible d'obtenir les résumés de chaque poste particulier car ils ne sont pas inclus dans le code HTML d'une page Indeed donnée. Nous pouvons obtenir des informations sur chaque poste à partir de ce qui est fourni. Nous pouvons utiliser Selenium à cette fin.
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.
Artices connexes
Comment récupérer les données de Twitter en utilisant Python
Comment récupérer des données sur Instagram en utilisant Python
Comment récupérer Reddit à l'aide de Python
Dans cet article, nous avons vu ce qu'est le web scraping et comment il peut être utile dans notre vie quotidienne en prenant un exemple pratique de scraping de données d'emploi à partir des pages web d'Indeed. Veuillez noter que les résultats que vous obtiendrez peuvent être différents de ceux-ci, car les pages sont dynamiques et les informations changent avec le temps.
Le Web Scraping est une technique incroyable si elle est réalisée correctement et en fonction de vos besoins. Nous avons vu plus loin les cinq aspects importants de chaque offre d'emploi et comment les extraire. Si vous essayez ce code par vous-même, vous aurez récupéré les données des offres d'emploi, et vous n'aurez pas besoin de rechercher les offres manuellement, ce qui est incroyable. La même technique peut être appliquée à d'autres pages web, mais leur structure peut être différente. Il faut donc optimiser le code en conséquence. Mais toutes les bases sont couvertes dans cet article, il n'y aura donc aucune difficulté à scraper d'autres pages également.
Si vous recherchez des services de procuration, n'oubliez pas de consulter les sites suivants ProxyScrape résidentiel et premium proxys.