آشنایی با requests

  • مدرس : علی بیگدلی
  • تاریخ انتشار: 1404/05/12
  • تعداد بازدید: 22

کتابخانه Requests یکی از اجزای جدایی ناپذیر Python برای ایجاد درخواست های HTTP به یک URL مشخص است. خواه REST API باشد یا Web Scrapping ، برای ادامه کار با این فناوری ها باید درخواست ها را یاد گرفت. وقتی شخصی درخواستی را به URI می دهد ، پاسخ را برمی گرداند. درخواست های پایتون قابلیت های داخلی برای مدیریت درخواست و پاسخ را فراهم می کند.

request و response چگونه کار می کند؟

ارتباط HTTP شامل دو اصطلاح مهم است و Client و Server هستند.
clinet : آن است که درخواست HTTP را ارائه می دهد. به عنوان مثال مرورگر مشتری است.

server : سرور کسي است که درخواست را دريافت کرده و پاسخ را ارسال مي کند. در واقع سرور قطعه ای از کد است که وظیفه پذیرش درخواست و ارسال پاسخ را بر عهده دارد. معمولاً رایانه ای که کد سرور بر روی آن اجرا می شود ، سرور نامیده می شود. ارتباط ساده HTTP در زیر نشان داده شده است

 

چرا ماژول requests پایتون را یاد بگیریم؟

Requests یک کتابخانه HTTP دارای مجوز Apache2 است که امکان ارسال درخواست های HTTP / 1.1 را با استفاده از Python فراهم می کند.
برای کار با وب، Requests الزامی است. با استفادهاز آن می توان با api ها کار کرد و و اطلاعات بسیار مفیدی را از سرویس ها و یا صفحات تحت وب استخراج نمود.
درخواست ها نقش عمده ای دارند که با REST API و Web Scrapping سرو کار دارند.
همچنین مجموعه ای از کتابخانه ها به ما این دسترسی را برای webscrapping و  ساخت ربات هایی برای اتوماسین صفحات وب می دهند از جمله این ماژول ها عبارت اند از : 

  • Beautiful Soup
  • LXML
  • MechanicalSoup
  • Python Requests
  • Scrapy
  • Selenium
  • Urllib

که در دوره مجزای webscrapping و atumation با پایتون فرا خواهیم گرفت.

نصب کتابخانه requests

نصب requests  بستگی به نسخه سیستم عامل دارد اما در همه آن ها می توانید با استفاده از pip اقدام به نصب نمایید.

pip install requests

روش اصلی برای نصب requests  بر روی هر سیستم عامل ، گرفتن فایل های پایه و نصب دستی است و Requests به طور فعال در GitHub ، جایی که کد همیشه در دسترس است ، توسعه می یابد. برای رفتن به repo مربوطه  به اینجا مراجعه کنید.

متد های قابل اجرا با دستور requests:

Method Description
GET GET method is used to retrieve information from the given server using a given URI.
POST POST request method requests that a web server accepts the data enclosed in the body of the request message, most likely for storing it
PUT The PUT method requests that the enclosed entity be stored under the supplied URI. If the URI refers to an already existing resource, it is modified and if the URI does not point to an existing resource, then the server can create the resource with that URI.
DELETE The DELETE method deletes the specified resource
HEAD The HEAD method asks for a response identical to that of a GET request, but without the response body.
PATCH It is used for modify capabilities. The PATCH request only needs to contain the changes to the resource, not the complete resource

مثال زیر نمونه ای ساده از یک request از نوع get است.

import requests 
   
# Making a GET request 
response = requests.get('https://api.github.com/users/alibigdeli') 
  
# check status code for response received 
# success code - 200 
print(response) 
  
# print content of request 
print(response.content) 

که خروجی مشابه زیر خواهد داشت:

<Response [200]>
b'{
  "login": "AliBigdeli",
  "id": 29748439,
  "node_id": "MDQ6VXNlcjI5NzQ4NDM5",
  "avatar_url": "https://avatars.githubusercontent.com/u/29748439?v=4",
  "gravatar_id": "",
  "url": "https://api.github.com/users/AliBigdeli",
  "html_url": "https://github.com/AliBigdeli",
  "followers_url": "https://api.github.com/users/AliBigdeli/followers",
  "following_url": "https://api.github.com/users/AliBigdeli/following{/other_user}",
  "gists_url": "https://api.github.com/users/AliBigdeli/gists{/gist_id}",
  "starred_url": "https://api.github.com/users/AliBigdeli/starred{/owner}{/repo}",
  "subscriptions_url": "https://api.github.com/users/AliBigdeli/subscriptions",
  "organizations_url": "https://api.github.com/users/AliBigdeli/orgs",
  "repos_url": "https://api.github.com/users/AliBigdeli/repos",
  "events_url": "https://api.github.com/users/AliBigdeli/events{/privacy}",
  "received_events_url": "https://api.github.com/users/AliBigdeli/received_events",
  "type": "User",
  "site_admin": false,
  "name": "TheAliBigdeli",
  "company": "icc-aria",
  "blog": "https://www.icc-aria.ir",
  "location": "iran,karaj",
  "email": null,
  "hireable": null,
  "bio": "I am Ali Bigdeli, my passion for development took me from networking manager to python programming and AI plus IOT contributer.",
  "twitter_username": null,
  "public_repos": 32,
  "public_gists": 0,
  "followers": 39,
  "following": 1,
  "created_at": "2017-06-28T07:21:45Z",
  "updated_at": "2022-01-05T10:36:42Z"
}'

اما هر object که از request ایجاد می شود می تواند دارای ویژگی های متعددی باشد که در بالا 2 مورد کد پاسخ یا response code و همچنین محتوای پاسخ را مشاهده می کنید.

کدهای وضعیت پاسخ HTTP نشان می دهد که آیا یک درخواست خاص HTTP با موفقیت انجام شده است. پاسخ ها در پنج کلاس گروه بندی می شوند:

  • پاسخ های اطلاعاتی (100–199) info
  • پاسخ های موفق (200–299) successful
  • هدایت (300-399) redirect
  • خطاهای مشتری (400–499) client errors
  • خطاهای سرور (500–599) server errors

که در بخش بعدی به طور کامل بررسی خواهیم کرد.

اما علاوه بر این کد شاخص های دیگری نیز در یک response گنجانده شده اند.

ثبت دیدگاه


نکته: آدرس ایمیل شما منتشر نخواهد شد

دیدگاه کاربران (0)


هیچ دیدگاهی ثبت نشده است. می‌توانید اولین نفر باشید.