شرح مكتبة requests في بايثون

كتبت بواسطة Ahmad Ali | بتاريخ الأربعاء 9 أيلول 2020

شرح مكتبة requests في بايثون


تعتبر مكتبة Request واحدة من أهم المكتبات في بايثون الخاصة بجلب المحتوى من الانترنت، لها العديد من التطبيقات في علوم البيانات وتحليلها مثل تحميل بيانات خاصة بالحالة الدراسية التي يعمل عليها عامل البيانات من الإنترنت لمعالجتها بالزمن الحقيقي.

في هذه المقالة سنقدم شرح كامل عن مكتبة Requests في بايثون.


تنصيب مكتبة requests

لتنصيب مكتبة requests قم بتنفيذ الكود التالي في موجه الأوامر


python -m pip install requests

تستطيع تنصيب المكتبة requests عبر الكود البرمجي الخاص بها كمايلي ( تأكد من كتابة النقطة بعد install )


curl -OL https://github.com/psf/requests/tarball/master
cd requests
python -m pip install .

انشاء طلب عبر مكتبة Request

لإنشاء طلب قم أولا باستدعاء المكتبة عبر تعليمة import ثم استدعاء التابع get في المكتبة مع تمرير رابط موقع الإنترنت الذي ترغب بتحميله كما يلي:


import requests
r = requests.get('https://api.github.com/events')

يقوم هذه التابع بإنشاء كائن Object من نوع Response يحوي جميع البيانات حول طلبك ويتم تخزينه في المتحول r.

لإنشاء طلب HTTP من نوع POST، أي لإرسال بيانات إلى مخدم وب، تستطيع القيام بذلك عبر إمرار مصفوفة JSON عبر البارامتر data في التابعpost كمايلي:

r = requests.post('https://httpbin.org/post', data = {'key':'value'})


كما أن جميع عمليات HTTP الأخرى متاحة كتوابع ضمن مكتبة requests كمايلي:

>>> r = requests.put('https://httpbin.org/put', data = {'key':'value'})
>>> r = requests.delete('https://httpbin.org/delete')
>>> r = requests.head('https://httpbin.org/get')
>>> r = requests.options('https://httpbin.org/get')


تمرير متحولات في الروابط ضمن مكتبة Requests


البارامترات في الروابط شيء جوهري عند إنشاء طلبات HTTP تستطيع القيام بذلك في مكتبة requests عبر إنشاء حمل payload على  شكل مصفوفة JSON وإمرارها للطلب على شكل:

>>> payload = {'key1': 'value1', 'key2': 'value2'}
>>> r = requests.get('https://httpbin.org/get', params=payload)


سيكون هذا الطلب مكافئ ل:

https://httpbin.org/get?key1=value1&key2=value2


للتأكد من أنك قمت بإنشاء الطلب الصحيح تستطيع طباعة الرابط 

print(r.url)


إنشاء ترويسة  Header خاصة لطلب HTTP 

تستطيع أيضا إنشاء ترويسة خاصة للطلب عبر تمرير مصفوفة JSON إلى البارامتر headers كمايلي:


>>> url = 'https://api.github.com/some/endpoint'
>>> headers = {'user-agent': 'my-app/0.0.1'}

>>> r = requests.get(url, headers=headers)


إرسال ملفات في مكتبة requests

لإرسال ملف عبر طلب POST تستطيع تمرير الملفات عبر البارامتر files كمايلي 

>>> url = 'https://httpbin.org/post'
>>> files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}

>>> r = requests.post(url, files=files)
>>> r.text
{
  ...
  "files": {
    "file": "<censored...binary...data>"
  },
  ...
}


كانت هذه لمحة سريعة عن أهم الاستخدامات لمكتبة requests، اذا كان لديك اي سؤال او استفسار اكتب لنا بالتعليقات وسنقوم بمساعدتك.