0 から Hero までの Python シリーズへようこそ!これまでのところ、給与および人事システムに関連するタスクでデータを操作し、強力な外部ライブラリを使用する方法を学びました。しかし、リアルタイム データを取得したり、外部サービスとやり取りしたりする必要がある場合はどうすればよいでしょうか?そこでAPI と Web スクレイピング が登場します。
このレッスンでは以下について説明します:
このレッスンを終了するまでに、外部データの取得を自動化し、人事システムをより動的でデータ主導型にすることができるようになります。
API (アプリケーション プログラミング インターフェイス) は、さまざまなソフトウェア アプリケーションが相互に通信できるようにする一連のルールです。簡単に言うと、コードから直接別のサービスやデータベースと対話できるようになります。
例:
ほとんどの API は、REST (Representational State Transfer) と呼ばれる標準を使用します。これにより、HTTP リクエスト (GET や POST など) を送信してデータにアクセスしたり、データを更新したりできます。
Python のリクエスト ライブラリを使用すると、API を簡単に操作できます。次のコマンドを実行してインストールできます:
pip install requests
GET リクエスト を使用して API からデータを取得する方法の簡単な例から始めましょう。
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}")
この例では:
給与計算のためにリアルタイムの税率を取得したいとします。多くの国が税率のパブリック API を提供しています。
この例では、税金 API からのデータの取得をシミュレートします。実際の API を使用する場合も、ロジックは同様になります。
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}")
このスクリプトは実際の税率 API で動作するように調整でき、給与システムを最新の税率で最新の状態に保つことができます。
API はデータを取得するための推奨される方法ですが、すべての Web サイトが API を提供しているわけではありません。そのような場合、Web スクレイピングを使用して Web ページからデータを抽出できます。
Python の BeautifulSoup ライブラリとリクエストを使用すると、Web スクレイピングが簡単になります。次のコマンドを実行してインストールできます:
pip install beautifulsoup4
企業の人事 Web サイトから 従業員福利厚生 に関するデータを収集したいと想像してください。基本的な例を次に示します:
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")
この例では:
この手法は、福利厚生、求人情報、給与ベンチマークなどの人事関連データを Web から収集する場合に役立ちます。
すべてをまとめて、実際の人事シナリオ用の API の使用と Web スクレイピングを組み合わせたミニアプリケーションを作成しましょう。従業員の総コストを計算します。
次のことを行います:
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.")
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.
While web scraping is powerful, there are some important best practices to follow:
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.
以上がHR Automation のための API と Web スクレイピングの使用に関するレッスンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。