Bienvenue dans notre série Python de 0 à Hero ! Jusqu'à présent, nous avons appris à manipuler les données et à utiliser de puissantes bibliothèques externes pour les tâches liées aux systèmes de paie et de ressources humaines. Mais que se passe-t-il si vous avez besoin de récupérer des données en temps réel ou d'interagir avec des services externes ? C'est là que les API et le web scraping entrent en jeu.
Dans cette leçon, nous aborderons :
- Que sont les API et pourquoi elles sont utiles.
- Comment interagir avec les API REST à l'aide de la bibliothèque de requêtes de Python.
- Comment appliquer les techniques de web scraping pour extraire des données de sites Web.
- Exemples pratiques, tels que la récupération des taux d'imposition en temps réel pour la paie ou la récupération des données sur les avantages sociaux des employés à partir d'un site Web.
À la fin de cette leçon, vous serez en mesure d'automatiser la récupération de données externes, rendant ainsi vos systèmes RH plus dynamiques et axés sur les données.
1. Que sont les API ?
Une API (Application Programming Interface) est un ensemble de règles qui permettent à différentes applications logicielles de communiquer entre elles. En termes plus simples, il vous permet d'interagir avec un autre service ou une autre base de données directement à partir de votre code.
Par exemple:
- Vous pouvez utiliser une API pour récupérer les taux d'imposition en temps réel pour les calculs de paie.
- Vous pouvez intégrer une API de logiciel RH pour extraire les données des employés directement dans votre système.
- Vous pouvez également utiliser une API météo pour savoir quand offrir des avantages spéciaux aux employés en fonction de conditions météorologiques extrêmes.
La plupart des API utilisent une norme appelée REST (Representational State Transfer), qui vous permet d'envoyer des requêtes HTTP (comme GET ou POST) pour accéder ou mettre à jour des données.
2. Utilisation de la bibliothèque de requêtes pour interagir avec les API
La bibliothèque de requêtes de Python facilite l'utilisation des API. Vous pouvez l'installer en exécutant :
pip install requests
Faire une requête API de base
Commençons par un exemple simple montrant comment récupérer des données à partir d'une API à l'aide d'une requête GET.
import requests
# Example API to get public data
url = "https://jsonplaceholder.typicode.com/users"
response = requests.get(url)
# Check if the request was successful (status code 200)
if response.status_code == 200:
data = response.json() # Parse the response as JSON
print(data)
else:
print(f"Failed to retrieve data. Status code: {response.status_code}")
Dans cet exemple :
- Nous utilisons la fonction request.get() pour récupérer les données de l'API.
- Si la demande aboutit, les données sont analysées au format JSON et nous pouvons les traiter.
Exemple d'application RH : récupération de données fiscales en temps réel
Disons que vous souhaitez récupérer les taux d'imposition en temps réel à des fins de paie. De nombreux pays proposent des API publiques pour les taux d'imposition.
Pour cet exemple, nous allons simuler la récupération de données à partir d'une API fiscale. La logique serait similaire lors de l'utilisation d'une API réelle.
import requests
# Simulated API for tax rates
api_url = "https://api.example.com/tax-rates"
response = requests.get(api_url)
if response.status_code == 200:
tax_data = response.json()
federal_tax = tax_data['federal_tax']
state_tax = tax_data['state_tax']
print(f"Federal Tax Rate: {federal_tax}%")
print(f"State Tax Rate: {state_tax}%")
# Use the tax rates to calculate total tax for an employee's salary
salary = 5000
total_tax = salary * (federal_tax state_tax) / 100
print(f"Total tax for a salary of ${salary}: ${total_tax:.2f}")
else:
print(f"Failed to retrieve tax rates. Status code: {response.status_code}")
Ce script peut être adapté pour fonctionner avec une API de taux d'imposition réel, vous aidant ainsi à maintenir votre système de paie à jour avec les derniers taux d'imposition.
3. Web Scraping pour collecter des données
Bien que les API soient la méthode privilégiée pour récupérer des données, tous les sites Web ne les proposent pas. Dans ces cas, le web scraping peut être utilisé pour extraire des données d'une page Web.
La bibliothèque
BeautifulSoup de Python, ainsi que les requêtes, facilitent le scraping Web. Vous pouvez l'installer en exécutant :
pip installe beautifulsoup4
pip install beautifulsoup4
Exemple : récupération des données sur les avantages sociaux des employés d'un site Web
Imaginez que vous souhaitiez récupérer des données sur les
avantages sociaux du site Web RH d'une entreprise. Voici un exemple simple :
demandes d'importation
à partir de bs4 importer BeautifulSoup
# URL de la page Web que vous souhaitez supprimer
url = "https://exemple.com/employee-benefits"
réponse = requêtes.get (url)
# Analyser le contenu de la page avec BeautifulSoup
soupe = BeautifulSoup (response.content, 'html.parser')
# Recherchez et extrayez les données dont vous avez besoin (par exemple, liste des avantages)
avantages = soupe.find_all("div", class_="avantage-item")
# Parcourez et imprimez les avantages
pour bénéficier des prestations :
titre = bénéfice.find("h3").get_text()
description = avantage.find("p").get_text()
print(f"Avantage : {titre}")
print(f"Description : {description}\n")
pip install beautifulsoup4
Dans cet exemple :
Nous demandons le contenu d'une page Web à l'aide de request.get().-
L'objet BeautifulSoup analyse le contenu HTML.-
Nous extrayons ensuite les éléments spécifiques qui nous intéressent (par exemple, les titres et les descriptions des avantages) à l'aide de find_all().-
Cette technique est utile pour collecter des données liées aux ressources humaines telles que les avantages sociaux, les offres d'emploi ou les références salariales à partir du Web.
4. Combiner les API et le Web Scraping dans les applications RH
Rassemblons tout et créons une mini-application qui combine l'utilisation de l'API et le web scraping pour un scénario RH réel : calculer le
coût total d'un employé.
Bien:
Utilisez une API pour obtenir les taux d'imposition en temps réel.-
Grattez une page Web pour connaître les coûts supplémentaires en matière d'avantages sociaux.-
Exemple : Calculateur du coût total des employés
demandes d'importation
à partir de bs4 importer BeautifulSoup
# Étape 1 : Obtenez les taux d'imposition de l'API
def get_tax_rates() :
api_url = "https://api.example.com/tax-rates"
réponse = requêtes.get (api_url)
si réponse.status_code == 200 :
tax_data = réponse.json()
taxe_fédérale = données_taxes['taxe_fédérale']
état_taxe = données_taxes['état_taxe']
retourner fédéral_tax, state_tax
autre:
print("Erreur lors de la récupération des taux d'imposition.")
retourner Aucun, Aucun
# Étape 2 : Supprimez les coûts des avantages sociaux des employés d'un site Web
def get_benefit_costs() :
url = "https://exemple.com/employee-benefits"
réponse = requêtes.get (url)
si réponse.status_code == 200 :
soupe = BeautifulSoup (response.content, 'html.parser')
# Supposons que la page indique le coût mensuel des prestations
Benefit_costs = Soup.find("div", class_="benefit-total").get_text()
retourner float(benefit_costs.strip("$"))
autre:
print("Erreur lors de la récupération des coûts des prestations.")
retourner 0,0
# Étape 3 : Calculer le coût total du personnel
def calculate_total_employee_cost (salaire) :
taxe_fédérale, state_tax = get_tax_rates()
avantages_cost = get_benefit_costs()
si Federal_tax n'est pas None et state_tax n'est pas None :
# Déduction fiscale totale
total_tax = salaire * (federal_tax state_tax) / 100
# Coût total = impôt sur les avantages salariaux
total_cost = salaire Benefits_cost total_tax
retourner coût_total
autre:
retourner Aucun
# Exemple d'utilisation
employé_salaire = 5000
total_cost = calculate_total_employee_cost (employee_salary)
si coût_total :
print(f"Coût total pour l'employé : ${total_cost:.2f}")
autre:
print("Impossible de calculer le coût des employés.")
pip install beautifulsoup4
Comment ça marche :
La fonction get_tax_rates() récupère les taux d'imposition à partir d'une API.-
La fonction get_benefit_costs() récupère une page Web pour le coût des avantages sociaux.-
La fonction calculate_total_employee_cost() calcule le coût total en combinant le salaire, les impôts et les avantages sociaux.-
Il s'agit d'un exemple simplifié mais montre comment vous pouvez combiner des données provenant de différentes sources (API et web scraping) pour créer des applications RH plus dynamiques et plus utiles.
Meilleures pratiques pour le web scraping
Bien que le web scraping soit puissant, il existe quelques bonnes pratiques importantes à suivre :
- Respectez le fichier robots.txt du site Web : certains sites Web n'autorisent pas le scraping, et vous devez vérifier leur fichier robots.txt avant de le scraper.
- Utilisez des intervalles appropriés entre les requêtes : évitez de surcharger le serveur en ajoutant des délais entre les requêtes à l'aide de la fonction time.sleep().
- Évitez de supprimer des données sensibles ou protégées par des droits d'auteur : assurez-vous toujours que vous ne violez aucune règle légale ou éthique lorsque vous supprimez des données.
Conclusion
Dans cette leçon, nous avons exploré comment interagir avec des services externes à l'aide des
API et comment extraire des données de sites Web via le web scraping. Ces techniques ouvrent des possibilités infinies pour intégrer des données externes dans vos applications Python, notamment dans un contexte RH.