Python 0 から Hero まで シリーズへようこそ!これまでのところ、給与および人事システムに関連するタスクでデータを操作し、強力な外部ライブラリを使用する方法を学びました。しかし、リアルタイム データを取得したり、外部サービスとやり取りしたりする必要がある場合はどうすればよいでしょうか?そこでAPIとウェブスクレイピングが登場します。
このレッスンでは次の内容を取り上げます:
このレッスンを終了するまでに、外部データの取得を自動化し、人事システムをより動的でデータ主導型にすることができるようになります。
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 を提供しているわけではありません。このような場合、ウェブ スクレイピングを使用してウェブページからデータを抽出できます。
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.")
これは簡略化された例ですが、さまざまなソース (API と Web スクレイピング) からのデータを組み合わせて、より動的で有用な HR アプリケーションを作成する方法を示しています。
Web スクレイピングは強力ですが、従うべき重要なベスト プラクティスがいくつかあります:
このレッスンでは、APIを使用して外部サービスと対話する方法と、ウェブスクレイピングを通じてウェブサイトからデータを抽出する方法を学びました。これらのテクニックは、特に HR コンテキストにおいて、外部データを Python アプリケーションに統合するための無限の可能性を開きます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3