"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Lección Cómo trabajar con API y Web Scraping para la automatización de recursos humanos

Lección Cómo trabajar con API y Web Scraping para la automatización de recursos humanos

Publicado el 2024-11-05
Navegar:797

Lesson  Working with APIs and Web Scraping for HR Automation

¡Bienvenido de nuevo a nuestra serie Python de 0 a Hero! Hasta ahora, hemos aprendido cómo manipular datos y utilizar potentes bibliotecas externas para tareas relacionadas con la nómina y los sistemas de recursos humanos. Pero, ¿qué sucede si necesita obtener datos en tiempo real o interactuar con servicios externos? Ahí es donde entran en juego las API y el web scraping.

En esta lección, cubriremos:

  1. Qué son las API y por qué son útiles.
  2. Cómo interactuar con API REST usando la biblioteca de solicitudes de Python.
  3. Cómo aplicar técnicas de web scraping para extraer datos de sitios web.
  4. Ejemplos prácticos, como obtener tasas impositivas en tiempo real para la nómina o extraer datos de beneficios de los empleados de un sitio web.

Al final de esta lección, podrá automatizar la recuperación de datos externos, haciendo que sus sistemas de recursos humanos sean más dinámicos y basados ​​en datos.


1. ¿Qué son las API?

Una API (Interfaz de programación de aplicaciones) es un conjunto de reglas que permite que diferentes aplicaciones de software se comuniquen entre sí. En términos más simples, te permite interactuar con otro servicio o base de datos directamente desde tu código.

Por ejemplo:

  • Puedes utilizar una API para obtener tasas impositivas en tiempo real para cálculos de nómina.
  • Puede integrarse con una API de software de recursos humanos para extraer los datos de los empleados directamente a su sistema.
  • O puedes usar una API meteorológica para saber cuándo ofrecer beneficios especiales a los empleados en función de condiciones climáticas extremas.

La mayoría de las API utilizan un estándar llamado REST (Transferencia de estado representacional), que le permite enviar solicitudes HTTP (como GET o POST) para acceder o actualizar datos.


2. Uso de la biblioteca de solicitudes para interactuar con las API

La biblioteca de solicitudes de Python facilita el trabajo con API. Puedes instalarlo ejecutando:

pip install requests

Realizar una solicitud de API básica

Comencemos con un ejemplo simple de cómo obtener datos de una API usando una solicitud 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}")

En este ejemplo:

  • Usamos la función request.get() para recuperar datos de la API.
  • Si la solicitud tiene éxito, los datos se analizan como JSON y podemos procesarlos.

Ejemplo de aplicación de recursos humanos: obtención de datos fiscales en tiempo real

Supongamos que desea obtener tasas impositivas en tiempo real para fines de nómina. Muchos países ofrecen API públicas para las tasas impositivas.

Para este ejemplo, simularemos la obtención de datos de una API de impuestos. La lógica sería similar cuando se utiliza una API real.

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}")

Este script podría adaptarse para funcionar con una API de tasa impositiva real, lo que le ayudará a mantener su sistema de nómina actualizado con las últimas tasas impositivas.


3. Web Scraping para recopilar datos

Si bien las API son el método preferido para obtener datos, no todos los sitios web las proporcionan. En esos casos, se puede utilizar web scraping para extraer datos de una página web.

La biblioteca BeautifulSoup de Python, junto con las solicitudes, facilita el web scraping. Puedes instalarlo ejecutando:

pip install beautifulsoup4

Ejemplo: extracción de datos de beneficios para empleados de un sitio web

Imagine que desea extraer datos sobre beneficios de los empleados del sitio web de recursos humanos de una empresa. Aquí hay un ejemplo básico:

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")

En este ejemplo:

  • Solicitamos el contenido de una página web usando request.get().
  • El objeto BeautifulSoup analiza el contenido HTML.
  • Luego extraemos los elementos específicos que nos interesan (por ejemplo, títulos y descripciones de beneficios) usando find_all().

Esta técnica es útil para recopilar datos relacionados con recursos humanos, como beneficios, ofertas de trabajo o puntos de referencia salariales de la web.


4. Combinación de API y Web Scraping en aplicaciones de recursos humanos

Juntemos todo y creemos una miniaplicación que combine el uso de API y web scraping para un escenario de recursos humanos del mundo real: calcular el costo total de un empleado.

Bien:

  • Utilice una API para obtener tasas impositivas en tiempo real.
  • Busque una página web para conocer los costos adicionales de beneficios para empleados.

Ejemplo: Calculadora de costos totales de empleados

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.")

Cómo funciona:

  1. La función get_tax_rates() recupera tasas impositivas de una API.
  2. La función get_benefit_costs() extrae una página web para calcular el costo de los beneficios de los empleados.
  3. La función calcular_total_employee_cost() calcula el costo total combinando salario, impuestos y beneficios.

Este es un ejemplo simplificado, pero demuestra cómo se pueden combinar datos de diferentes fuentes (API y web scraping) para crear aplicaciones de recursos humanos más dinámicas y útiles.


Mejores prácticas para el web scraping

Si bien el web scraping es poderoso, existen algunas prácticas recomendadas importantes a seguir:

  1. Respeta el archivo robots.txt del sitio web: algunos sitios web no permiten el scraping y debes verificar su archivo robots.txt antes de realizar el scraping.
  2. Utilice intervalos apropiados entre solicitudes: evite sobrecargar el servidor agregando retrasos entre solicitudes utilizando la función time.sleep().
  3. Evite extraer datos confidenciales o protegidos por derechos de autor: asegúrese siempre de no violar ninguna regla legal o ética al extraer datos.

Conclusión

En esta lección, exploramos cómo interactuar con servicios externos usando API y cómo extraer datos de sitios web a través de web scraping. Estas técnicas abren infinitas posibilidades para integrar datos externos en sus aplicaciones Python, especialmente en el contexto de recursos humanos.

Declaración de liberación Este artículo se reproduce en: https://dev.to/dazevedo/lesson-7-working-with-apis-and-web-scraping-for-hr-automation-lmj?1 Si hay alguna infracción, comuníquese con Study_golang @163.com eliminar
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3