¡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:
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.
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:
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.
La biblioteca de solicitudes de Python facilita el trabajo con API. Puedes instalarlo ejecutando:
pip install requests
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:
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.
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
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:
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.
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:
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.")
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.
Si bien el web scraping es poderoso, existen algunas prácticas recomendadas importantes a seguir:
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.
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