استخراج بيانات من API بدون معرفة عدد الصفحات الأقصى
عند العمل مع واجهات برمجة التطبيقات (API) لجلب البيانات، قد تواجه تحديًا كبيرًا عندما لا تعرف العدد الإجمالي للصفحات المتاحة من البيانات. هذه المشكلة شائعة خصوصًا عندما تكون البيانات مرتبة عبر صفحات متعددة وتحتاج إلى تصفية البيانات بناءً على معايير معينة مثل تواريخ الاستلام. في هذا المقال، سوف نستعرض كيفية استخدام بايثون لتحقيق ذلك بفعالية.
فهم مشكلة عدم المعرفة بحدود الصفحات
تتطلب واجهات برمجة التطبيقات في كثير من الأحيان فكرة التصفح عبر صفحات متعددة لجلب مجموعات كبيرة من البيانات. وعندما لا تكون لديك فكرة معينة عن عدد الصفحات، قد تجد نفسك مضطراً لإجراء طلبات متكررة حتى تصل إلى الصفحة الأخيرة.
تحضير البيئة البرمجية
قبل البدء في الكود، تأكد من أنك قد قمت بتثبيت المكتبات المطلوبة. تحتاج إلى مكتبة requests
للتعامل مع طلبات HTTP. يمكنك تثبيتها بواسطة الأمر:
pip install requests
استراتيجية جلب البيانات بين تاريخين محددين
لنفترض أنك تريد الحصول على البيانات من واجهة برمجة التطبيقات بين تاريخين محددين، على سبيل المثال من 2016-10-01 إلى 2017-09-30. يمكنك البدء بتهيئة تاريخ البداية والنهاية، بالإضافة إلى بعض المتغيرات مثل حجم الصفحة ورقم الصفحة.
import requests
import datetime
start_date = datetime.datetime(2016, 10, 1).isoformat() # تحويل إلى ISO-8601
end_date = datetime.datetime(2017, 9, 30).isoformat()
page_size = 2000
page_number = 1
all_data = []
إنشاء حلقة التكرار
الآن، سنقوم بإنشاء حلقة تكرارية لجلب البيانات. سنقوم بإنشاء طلب JSON مع التاريخين وحجم الصفحة، وسنقوم بزيادة رقم الصفحة في كل تكرار.
while True:
data = {
"receivedDateFrom": start_date,
"receivedDateTo": end_date,
"pageSize": page_size,
"pageNumber": page_number
}
response = requests.post(url, headers=headers, json=data)
if response.status_code != 200:
print("حدث خطأ خلال الطلب")
break
response_data = response.json()
# تحقق من وجود بيانات جديدة
if not response_data:
break
all_data.extend(response_data) # إضافة البيانات الجديدة إلى القائمة
page_number += 1 # الانتقال إلى الصفحة التالية
التعامل مع البيانات المستخرجة
بعد تنفيذ الكود أعلاه، ستحصل على جميع البيانات التي تتوافق مع معايير التاريخ التي حددتها. الآن يمكنك معالجة البيانات كما تشاء، سواء كان ذلك بحفظها في قاعدة بيانات، أو تحليلها، أو تحويلها إلى تنسيق أكثر ملاءمة.
نصائح لتحسين الأداء
لتحسين الأداء وتجربة استخدام واجهة برمجة التطبيقات، يُفضل:
- التأكد من أن طلبات API تتضمن فقط البيانات الضرورية.
- تجنب التكرار غير الضروري في الطلبات.
- استخدام التخزين المؤقت (Caching) إذا كان ذلك ممكنًا.
في النهاية، يمكن القول إن استخدام بايثون لجلب البيانات من واجهات برمجة التطبيقات عندما لا تعرف الحد الأقصى لعدد الصفحات هو عملية تتطلب تخطيطًا وتكرارًا مناسبين. يمكنك تعديل وتحسين الكود وفقًا لاحتياجاتك الخاصة.
بهذا، نكون قد ناقشنا كيفية استخدام بايثون لاسترداد جزء من البيانات من واجهة برمجة التطبيقات عندما لا تعرف العدد الأقصى للصفحات. إذا كانت لديك أي استفسارات أو تريد معرفة المزيد، فلا تتردد في طرح سؤالك.