Maison >développement back-end >Tutoriel Python >Leçon Travailler avec les API et le Web Scraping pour l'automatisation des ressources humaines

Leçon Travailler avec les API et le Web Scraping pour l'automatisation des ressources humaines

WBOY
WBOYoriginal
2024-09-12 10:15:41934parcourir

Lesson  Working with APIs and Web Scraping for HR Automation

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 :

  1. Que sont les API et pourquoi elles sont utiles.
  2. Comment interagir avec les API REST à l'aide de la bibliothèque de requêtes de Python.
  3. Comment appliquer les techniques de web scraping pour extraire des données de sites Web.
  4. 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 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 un standard appelé 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 le travail avec les 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 fournissent 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 pourrait ê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 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 des employés du site Web RH d'une entreprise. Voici un exemple simple :

import requests
from bs4 import BeautifulSoup

# URL of the webpage you want to scrape
url = "https://example.com/employee-benefits"
response = requests.get(url)

# Parse the page content with BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')

# Find and extract the data you need (e.g., benefits list)
benefits = soup.find_all("div", class_="benefit-item")

# Loop through and print out the benefits
for benefit in benefits:
    title = benefit.find("h3").get_text()
    description = benefit.find("p").get_text()
    print(f"Benefit: {title}")
    print(f"Description: {description}\n")
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 RH telles que les avantages sociaux, les offres d'emploi ou les références salariales sur le 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 d'API et le web scraping pour un scénario RH réel : calculer le

coût total d'un employé.

Nous allons :

  • Use an API to get real-time tax rates.
  • Scrape a webpage for additional employee benefit costs.

Example: Total Employee Cost Calculator

import requests
from bs4 import BeautifulSoup

# Step 1: Get tax rates from API
def get_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']
        return federal_tax, state_tax
    else:
        print("Error fetching tax rates.")
        return None, None

# Step 2: Scrape employee benefit costs from a website
def get_benefit_costs():
    url = "https://example.com/employee-benefits"
    response = requests.get(url)

    if response.status_code == 200:
        soup = BeautifulSoup(response.content, 'html.parser')
        # Let's assume the page lists the monthly benefit cost
        benefit_costs = soup.find("div", class_="benefit-total").get_text()
        return float(benefit_costs.strip("$"))
    else:
        print("Error fetching benefit costs.")
        return 0.0

# Step 3: Calculate total employee cost
def calculate_total_employee_cost(salary):
    federal_tax, state_tax = get_tax_rates()
    benefits_cost = get_benefit_costs()

    if federal_tax is not None and state_tax is not None:
        # Total tax deduction
        total_tax = salary * (federal_tax + state_tax) / 100

        # Total cost = salary + benefits + tax
        total_cost = salary + benefits_cost + total_tax
        return total_cost
    else:
        return None

# Example usage
employee_salary = 5000
total_cost = calculate_total_employee_cost(employee_salary)

if total_cost:
    print(f"Total cost for the employee: ${total_cost:.2f}")
else:
    print("Could not calculate employee cost.")

How It Works:

  1. The get_tax_rates() function retrieves tax rates from an API.
  2. The get_benefit_costs() function scrapes a webpage for the employee benefits cost.
  3. The calculate_total_employee_cost() function calculates the total cost by combining salary, taxes, and benefits.

This is a simplified example but demonstrates how you can combine data from different sources (APIs and web scraping) to create more dynamic and useful HR applications.


Best Practices for Web Scraping

While web scraping is powerful, there are some important best practices to follow:

  1. Respect the website’s robots.txt: Some websites don’t allow scraping, and you should check their robots.txt file before scraping.
  2. Use appropriate intervals between requests: Avoid overloading the server by adding delays between requests using the time.sleep() function.
  3. Avoid scraping sensitive or copyrighted data: Always make sure you’re not violating any legal or ethical rules when scraping data.

Conclusion

In this lesson, we explored how to interact with external services using APIs and how to extract data from websites through web scraping. These techniques open up endless possibilities for integrating external data into your Python applications, especially in an HR context.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn