إرسال طلب HTTP باستخدام requests في بايثون

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

تثبيت وإعداد مكتبة requests

مكتبة requests ليست جزءًا من التوزيعة القياسية لـ Python، لذا يجب تثبيتها بشكل منفصل. نفّذ الأمر التالي في الطرفية:

pip install requests

للتحقق من نجاح التثبيت، نفّذ:

import requests
print(requests.__version__)

ما هي طلبات HTTP ولماذا نحتاج مكتبة requests

HTTP (بروتوكول نقل النص التشعبي) هو بروتوكول لنقل البيانات بين العميل والخادم. requests هي مكتبة خارجية لـ Python تُبسّط بشكل كبير إرسال طلبات HTTP مقارنة بالوحدات المدمجة مثل urllib.

المزايا الرئيسية لمكتبة requests

  • سهولة الاستخدام ووضوح الكود
  • دعم جميع طرق HTTP (GET, POST, PUT, DELETE, PATCH)
  • التعامل التلقائي مع بيانات JSON
  • دعم مدمج لملفات تعريف الارتباط والجلسات
  • إعداد مرن للرؤوس والبارامترات
  • معالجة الأخطاء والاستثناءات
  • دعم خوادم البروكسي وشهادات SSL

طرق HTTP الأساسية مع أمثلة عملية

طلبات GET: جلب البيانات

يُستخدم طلب GET لجلب البيانات من الخادم دون تعديلها.

import requests

# طلب GET بسيط
response = requests.get('https://api.github.com')
print(response.status_code)  # 200
print(response.text)         # محتوى الاستجابة

تمرير البارامترات في طلب GET

# تمرير البارامترات عبر قاموس
params = {
    'q': 'python',
    'sort': 'stars',
    'order': 'desc',
    'page': 1
}

response = requests.get('https://api.github.com/search/repositories', params=params)
print(response.url)  # التحقق من الرابط النهائي مع البارامترات

طلبات POST: إرسال البيانات

يُستخدم طلب POST لإرسال البيانات إلى الخادم وإنشاء موارد جديدة.

# طلب POST مع بيانات نموذج
data = {
    'username': 'test_user',
    'password': 'secure_password',
    'email': 'test@example.com'
}

response = requests.post('https://httpbin.org/post', data=data)
print(response.json())

طلب POST مع بيانات JSON

# إرسال بيانات JSON
json_data = {
    'title': 'منشور جديد',
    'body': 'محتوى المنشور',
    'userId': 1
}

response = requests.post(
    'https://jsonplaceholder.typicode.com/posts',
    json=json_data
)
print(response.json())

طلبات PUT: تحديث البيانات

يُستخدم طلب PUT لتحديث الموارد الموجودة بشكل كامل.

update_data = {
    'id': 1,
    'title': 'عنوان محدث',
    'body': 'محتوى جديد',
    'userId': 1
}

response = requests.put(
    'https://jsonplaceholder.typicode.com/posts/1',
    json=update_data
)
print(f"الحالة: {response.status_code}")
print(response.json())

طلبات PATCH: تحديث جزئي

يُستخدم PATCH لتحديث جزء من المورد.

patch_data = {'title': 'عنوان محدث جزئيًا'}

response = requests.patch(
    'https://jsonplaceholder.typicode.com/posts/1',
    json=patch_data
)
print(response.json())

طلبات DELETE: حذف البيانات

يُستخدم طلب DELETE لحذف الموارد من الخادم.

response = requests.delete('https://jsonplaceholder.typicode.com/posts/1')
print(f"حالة الحذف: {response.status_code}")

التعامل مع رؤوس HTTP

تحتوي الرؤوس على بيانات وصفية حول الطلب وتسمح بإرسال معلومات إضافية إلى الخادم.

headers = {
    'User-Agent': 'Mozilla                

المدونات

توصيات الكتب