Bem-vindo de volta à nossa série Python from 0 to Hero! Até agora, aprendemos como manipular dados e usar bibliotecas externas poderosas para tarefas relacionadas à folha de pagamento e sistemas de RH. Mas e se você precisar buscar dados em tempo real ou interagir com serviços externos? É aí que APIs e web scraping entram em ação.
Nesta lição, abordaremos:
Ao final desta lição, você será capaz de automatizar a recuperação de dados externos, tornando seus sistemas de RH mais dinâmicos e orientados a dados.
Uma API (Application Programming Interface) é um conjunto de regras que permite que diferentes aplicativos de software se comuniquem entre si. Em termos mais simples, permite interagir com outro serviço ou banco de dados diretamente do seu código.
Por exemplo:
A maioria das APIs usa um padrão chamado REST (Representational State Transfer), que permite enviar solicitações HTTP (como GET ou POST) para acessar ou atualizar dados.
A biblioteca de solicitações do Python facilita o trabalho com APIs. Você pode instalá-lo executando:
pip install requests
Vamos começar com um exemplo simples de como buscar dados de uma API usando uma solicitação 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}")
Neste exemplo:
Digamos que você queira obter taxas de impostos em tempo real para fins de folha de pagamento. Muitos países fornecem APIs públicas para taxas de impostos.
Para este exemplo, simularemos a busca de dados de uma API fiscal. A lógica seria semelhante ao usar uma 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 pode ser adaptado para funcionar com uma API de taxa de imposto real, ajudando você a manter seu sistema de folha de pagamento atualizado com as taxas de imposto mais recentes.
Embora as APIs sejam o método preferido para buscar dados, nem todos os sites as fornecem. Nesses casos, web scraping pode ser usado para extrair dados de uma página da web.
A bibliotecaBeautifulSoup do Python, junto com as solicitações, facilita o web scraping. Você pode instalá-lo executando:
pip install beautifulsoup4
Imagine que você deseja extrair dados sobre benefícios dos funcionários do site de RH de uma empresa. Aqui está um exemplo 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")
Neste exemplo:
Esta técnica é útil para coletar dados relacionados a RH, como benefícios, ofertas de emprego ou referências salariais na web.
Vamos juntar tudo e criar um miniaplicativo que combina o uso de API e web scraping para um cenário de RH do mundo real: calculando o custo total de um funcionário.
Bem:
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 é um exemplo simplificado, mas demonstra como você pode combinar dados de diferentes fontes (APIs e web scraping) para criar aplicativos de RH mais dinâmicos e úteis.
Embora web scraping seja poderoso, existem algumas práticas recomendadas importantes a serem seguidas:
Nesta lição, exploramos como interagir com serviços externos usando APIs e como extrair dados de sites por meio de web scraping. Essas técnicas abrem possibilidades infinitas para integração de dados externos em seus aplicativos Python, especialmente em um contexto de RH.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3