مرحبًا بك مرة أخرى في سلسلة بايثون من 0 إلى البطل ! لقد تعلمنا حتى الآن كيفية التعامل مع البيانات واستخدام مكتبات خارجية قوية للمهام المتعلقة بأنظمة الرواتب والموارد البشرية. ولكن ماذا لو كنت بحاجة إلى جلب بيانات في الوقت الفعلي أو التفاعل مع الخدمات الخارجية؟ وهنا يأتي دور واجهات برمجة التطبيقات وتجميع الويب.
سنتناول في هذا الدرس ما يلي:
بحلول نهاية هذا الدرس، ستتمكن من أتمتة عملية استرجاع البيانات الخارجية، مما يجعل أنظمة الموارد البشرية لديك أكثر ديناميكية واعتمادًا على البيانات.
واجهة برمجة التطبيقات API (واجهة برمجة التطبيقات) هي مجموعة من القواعد التي تسمح لتطبيقات البرامج المختلفة بالتواصل مع بعضها البعض. بعبارات أبسط، فهو يتيح لك التفاعل مع خدمة أو قاعدة بيانات أخرى مباشرة من التعليمات البرمجية الخاصة بك.
على سبيل المثال:
تستخدم معظم واجهات برمجة التطبيقات معيارًا يسمى REST (نقل الحالة التمثيلية)، والذي يسمح لك بإرسال طلبات HTTP (مثل GET أو POST) للوصول إلى البيانات أو تحديثها.
تسهل مكتبة طلبات بايثون العمل مع واجهات برمجة التطبيقات. يمكنك تثبيته عن طريق تشغيل:
pip install requests
لنبدأ بمثال بسيط لكيفية جلب البيانات من واجهة برمجة التطبيقات باستخدام طلب 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}")
في هذا المثال:
لنفترض أنك تريد جلب معدلات الضرائب في الوقت الفعلي لأغراض الرواتب. توفر العديد من البلدان واجهات برمجة التطبيقات العامة لمعدلات الضرائب.
في هذا المثال، سنقوم بمحاكاة جلب البيانات من واجهة برمجة التطبيقات الضريبية. سيكون المنطق مشابهًا عند استخدام واجهة برمجة التطبيقات الفعلية.
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}")
يمكن تكييف هذا البرنامج النصي للعمل مع واجهة برمجة تطبيقات معدل الضريبة الحقيقية، مما يساعدك على تحديث نظام كشوف المرتبات الخاص بك بأحدث معدلات الضرائب.
على الرغم من أن واجهات برمجة التطبيقات هي الطريقة المفضلة لجلب البيانات، إلا أنه لا توفرها جميع مواقع الويب. في هذه الحالات، يمكن استخدام تجميع الويب لاستخراج البيانات من صفحة الويب.
مكتبةPython BeautifulSoup، بالإضافة إلى الطلبات، تجعل عملية تجريف الويب أمرًا سهلاً. يمكنك تثبيته عن طريق تشغيل:
pip install beautifulsoup4
تخيل أنك تريد استخراج بيانات حول مزايا الموظفين من موقع الموارد البشرية الخاص بالشركة. إليك مثال أساسي:
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")
في هذا المثال:
هذه التقنية مفيدة لجمع البيانات المتعلقة بالموارد البشرية مثل المزايا أو إعلانات الوظائف أو معايير الرواتب من الويب.
فلنجمع كل شيء معًا وننشئ تطبيقًا صغيرًا يجمع بين استخدام واجهة برمجة التطبيقات واستخراج الويب لسيناريو الموارد البشرية في العالم الحقيقي: حساب التكلفة الإجمالية للموظف.
حسنًا:
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.")
هذا مثال مبسط ولكنه يوضح كيف يمكنك دمج البيانات من مصادر مختلفة (واجهات برمجة التطبيقات وتجميع الويب) لإنشاء تطبيقات موارد بشرية أكثر ديناميكية وإفادة.
على الرغم من أن تجريف الويب يعد أمرًا قويًا، إلا أن هناك بعض أفضل الممارسات المهمة التي يجب اتباعها:
في هذا الدرس، اكتشفنا كيفية التفاعل مع الخدمات الخارجية باستخدام واجهات برمجة التطبيقات وكيفية استخراج البيانات من مواقع الويب من خلال تجميع الويب. تفتح هذه التقنيات إمكانيات لا حصر لها لدمج البيانات الخارجية في تطبيقات Python الخاصة بك، خاصة في سياق الموارد البشرية.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3