0Pricing
Learn AI with Python · درس

أساسيات REST API لجمع البيانات

HTTP GET/POST، والرؤوس، والمصادقة (API key وBearer)، وتحليل JSON باستخدام requests.

أساسيات REST API لجمع البيانات درس مجاني في Learn AI with Python على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Learn AI with Python، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

لماذا تهم واجهات API في الذكاء الاصطناعي؟

لا تتجاوز جودة النماذج جودة بياناتها. تتيح لك واجهات Web API جمع بيانات حديثة ومنظمة عند الطلب — مثل الطقس والأسعار والمنشورات الاجتماعية ومجموعات البيانات العامة — بدلًا من الاعتماد على ملف ثابت واحد.

تستخدم هذه الدورة Python ومكتبة requests الشائعة لجلب تلك البيانات وتخزينها.

ما المقصود بواجهة REST API؟

تتيح REST API الوصول إلى الموارد عبر HTTP. فأنت ترسل طلبًا إلى عنوان URL (نقطة نهاية) وتتلقى بيانات، غالبًا بصيغة JSON.

طرق HTTP الرئيسية:

  • GET — قراءة البيانات
  • POST — إنشاء البيانات
  • PUT/PATCH — تحديث البيانات
  • DELETE — إزالة البيانات

تستخدم GET غالبًا عند جمع البيانات.

أول طلب GET

ترسل requests.get(url) طلب GET وتعيد كائن Response. ويحتوي الرد على الحالة والترويسات والنص الأساسي.

import requests

resp = requests.get("https://api.example.com/users")
print(resp.status_code)   # 200
print(resp.text[:200])    # raw body as a string

التحقق من response.status_code

يخبرك رمز الحالة بما إذا كان الطلب قد نجح:

  • 200 — تم بنجاح
  • 301/302 — إعادة توجيه
  • 400 — طلب غير صالح
  • 401/403 — مشكلة في المصادقة
  • 404 — غير موجود
  • 429 — تم تجاوز حد معدل الطلبات
  • 500 — خطأ في الخادم
resp = requests.get(url)
if resp.status_code == 200:
    print("Success")
else:
    print("Failed:", resp.status_code)

تحليل JSON باستخدام response.json()

تعيد معظم واجهات API بيانات بصيغة JSON. تحلّل response.json() النص الأساسي وتحوله تلقائيًا إلى قواميس وقوائم Python.

لا تحلّل JSON يدويًا — تتولى .json() ذلك، وتُطلق خطأً واضحًا إذا لم يكن النص الأساسي بصيغة JSON صالحة.

resp = requests.get("https://api.example.com/users/1")
data = resp.json()
print(data["name"])
print(data["email"])

إرسال معاملات الاستعلام باستخدام params

يمكنك تصفية الطلبات وتهيئتها باستخدام معاملات الاستعلام. مرّر قاموسًا إلى params، وستنشئ requests عنوان URL نيابةً عنك مع التعامل مع الترميز.

يصبح المثال ?city=London&units=metric في عنوان URL.

params = {"city": "London", "units": "metric"}
resp = requests.get("https://api.example.com/weather", params=params)
print(resp.url)
print(resp.json())

إرسال الترويسات

تحمل الترويسات بيانات وصفية مثل نوع المحتوى، أو وكيل المستخدم، أو مفتاح/رمز API. مرّرها كقاموس إلى headers.

تتطلب العديد من واجهات API ترويسة Authorization للسماح بالوصول.

headers = {
    "Authorization": "Bearer YOUR_TOKEN",
    "User-Agent": "my-data-collector/1.0",
}
resp = requests.get("https://api.example.com/data", headers=headers)
print(resp.json())

‏raise_for_status() لكتابة تعليمات برمجية متينة

بدلًا من التحقق من الرموز يدويًا، استدعِ resp.raise_for_status(). فهي تطلق استثناء HTTPError لأي ردّ من فئة 4xx أو 5xx، وبذلك تظهر حالات الفشل بوضوح.

ضعها داخل try/except لمعالجة الأخطاء بسلاسة.

import requests

try:
    resp = requests.get(url, timeout=10)
    resp.raise_for_status()
    data = resp.json()
except requests.HTTPError as e:
    print("HTTP error:", e)
except requests.RequestException as e:
    print("Network error:", e)

اضبط مهلةً دائمًا

من دون timeout، قد يعلّق خادم متوقف عن الاستجابة النص البرمجي إلى الأبد. مرّر مهلةً دائمًا، بوحدة الثواني.

في حلقات جمع البيانات التي تصل إلى آلاف نقاط النهاية، يُعد غياب المهلة سببًا شائعًا لتجمّد المهام.

resp = requests.get(url, timeout=10)   # give up after 10 seconds

إعادة استخدام الاتصالات باستخدام Session

يعيد requests.Session استخدام اتصال TCP الأساسي بين الطلبات، كما يتيح لك ضبط الترويسات مرة واحدة. ويكون ذلك أسرع بكثير عند إجراء طلبات عديدة إلى المضيف نفسه.

import requests

session = requests.Session()
session.headers.update({"Authorization": "Bearer YOUR_TOKEN"})

for uid in [1, 2, 3]:
    resp = session.get(f"https://api.example.com/users/{uid}")
    print(resp.json()["name"])

session.close()

دالة مساعدة نظيفة للجلب

غلّف هذا النمط في دالة قابلة لإعادة الاستخدام: أنشئ جلسة، وطبّق مهلةً، وأطلق استثناءً عند حدوث أخطاء، وأعد JSON محللًا.

ستبني على هذه الدالة المساعدة في الدروس التالية للتعامل مع تقسيم النتائج إلى صفحات والتخزين.

def fetch_json(session, url, params=None):
    resp = session.get(url, params=params, timeout=10)
    resp.raise_for_status()
    return resp.json()

فحص سريع: طلبات متينة

تريد أن يطلق النص البرمجي استثناءً تلقائيًا عند تلقي ردّ 404 أو 500.

مراجعة: أساسيات REST API

يمكنك الآن جمع البيانات عبر HTTP:

  • استخدام requests.get(url, params=..., headers=...) لإجراء الطلبات
  • استخدام response.status_code وraise_for_status() لاكتشاف حالات الفشل
  • استخدام response.json() لتحليل النص الأساسي
  • استخدام timeout لتجنب التعليق
  • استخدام requests.Session لإعادة استخدام الاتصالات والترويسات

التالي: جمع مجموعات بيانات تمتد عبر صفحات عديدة.

الأسئلة الشائعة

هل درس «أساسيات REST API لجمع البيانات» مجاني؟

نعم — نص درس «أساسيات REST API لجمع البيانات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Learn AI with Python، انتقل إلى CoddyKit PRO. تتضمن دورة Learn AI with Python 4 دروس في المجموع.

ماذا ستتعلم في «أساسيات REST API لجمع البيانات»؟

HTTP GET/POST، والرؤوس، والمصادقة (API key وBearer)، وتحليل JSON باستخدام requests. تتمرن على Learn AI with Python مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Learn AI with Python؟

لا تُشترط خبرة سابقة. Learn AI with Python على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «أساسيات REST API لجمع البيانات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Learn AI with Python هذا؟

نعم. كل درس في Learn AI with Python يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات REST API لجمع البيانات
  2. تقسيم الصفحات وجمع مجموعات البيانات الكبيرة
  3. تخزين البيانات المُجمعة بكفاءة
  4. العمل مع واجهات برمجة التطبيقات للبيانات العامة
← العودة إلى Learn AI with Python