آموزش کامل کتابخانه requests در پایتون: استفاده از ریکوئست در پایتون

فهرست مطالب این نوشته
Toggleکتابخانه requests در پایتون برای تعامل با وب، APIها یا استخراج داده از سایتها استفاده میشود. در حوزه ارتباط با دنیای وب از طریق پروتکل HTTP این کتابخانه جزو محبوبترینها است. سادگی و قدرت، دو ویژگی مهم کتابخانه Requests هستند که اهمیت یادگیری آن را بیشتر میکنند. در این مطلب همهچیز را درباره کتابخانه requests در پایتون، از نصب تا استفادههای پیشرفته یاد میگیرید.

نصب کتابخانه requests در پایتون
برای نصب کتابخانه requests در پایتون python در ترمینال دستور زیر را وارد کنید:
pip install requests
یک نکته در حوزه آموزش نصب کتابخانه requests در پایتون وجود دارد و آن هم این است که این کتابخانه به صورت رسمی در PyPI قرار دارد و فقط با همین دستور ساده نصب میشود.
البته در بعضی محیطها مثل Jupyter یا Anaconda ممکن است نیاز باشد که ! را قبل از دستور قرار دهید:
!pip install requests
آشنایی با ساختار کلی درخواستها
حالا که نصب انجام شد، بیایید ببینیم چطور میتوان یک درخواست سادهی GET به یک سایت ارسال کرد. فرض کنید میخواهید اطلاعاتی از سایت GeeksforGeeks دریافت کنید:
import requests
response = requests.get(“https://www.geeksforgeeks.org/”)
print(response.status_code)
کاربرد کتابخانه request چیست؟
یک سوال تکراری توسعهدهندگان تازهکار این است که: کاربرد کتابخانه request چیست؟ برای پاسخ به این سوال در این قسمت میخواهیم مهمترین کاربردهای این کتابخانه را معرفی کنیم:
- دریافت اطلاعات از سایتها (web scraping)
- ارسال داده به سرورها (فرمها یا JSON)
- تعامل با APIها (به خصوص REST APIs)
- دانلود فایلها از وب
متدهای HTTP که میتوانید استفاده کنید
یکی از ویژگیهای کتابخانه requests در پایتون، پشتیبانی کامل از متدهای HTTP است. شما میتوانید از این متدها استفاده کنید:
- GET برای دریافت داده
- POST برای ارسال داده
- PUT برای بروزرسانی کامل
- PATCH برای بروزرسانی جزئی
- DELETE برای حذف
- HEAD برای دریافت فقط هدرها
آشنایی با شیء Response
بعد از ارسال هر درخواست، یک شیء از کلاس Response به شما بازمیگردد. این شیء در واقع نمایندهای از پاسخ سرور است و اطلاعات زیادی در خودش دارد.
برای مثال:
response = requests.get(“https://api.github.com/users/naveenkrnl”)
print(response.status_code)
print(response.headers)
print(response.text)
print(response.json())
با استفاده از متد json() میتوانید به راحتی محتوای JSON پاسخ را به دیکشنری پایتون تبدیل کنید. کتابخانه requests در پایتون json به شدت کاربردی است.
استفاده از پارامترها و هدرها
برای جستجو، فیلتر کردن یا شخصیسازی درخواست، باید پارامترهای Query و هدرها را تنظیم کنید. مثلاً اگر میخواهید در GitHub جستجویی انجام دهید:
params = {“q”: “python”, “sort”: “stars”}
headers = {“Accept”: “application/vnd.github.v3+json”}
response = requests.get(“https://api.github.com/search/repositories”, params=params, headers=headers)
نکته مهم: اگر میخواهید به کد منبع و مستندات کامل کتابخانه requests در پایتون github دسترسی پیدا کنید، حتماً به مخزن رسمی این پروژه در گیتهاب مراجعه کنید:
https://github.com/psf/requests
ارسال داده با POST
یکی از رایجترین کاربردهای کتابخانه requests در پایتون ارسال دادهها به سرور است. برای این کار میتوانید از متد post استفاده کنید. فرض کنید میخواهید یک فرم ساده ارسال کنید:
data = {“username”: “test”, “password”: “1234”}
response = requests.post(“https://httpbin.org/post”, data=data)
یا اگر قرار باشد دادههای JSON ارسال کنید:
json_data = {“name”: “Ali”, “age”: 30}
response = requests.post(“https://httpbin.org/post”, json=json_data)
احراز هویت در درخواستها
خیلی وقتها برای کار با APIها باید وارد حساب کاربری شوید یا توکن داشته باشید. کتابخانه ریکوئست در پایتون این امکان را با دو روش عمده فراهم میکند: Basic Auth و Token Auth. به عنوان مثال:
from requests.auth import HTTPBasicAuth
response = requests.get(“https://api.github.com/user”, auth=HTTPBasicAuth(“user”, “pass”))
یا استفاده از توکن:
from requests.auth import AuthBase
class TokenAuth(AuthBase):
def __init__(self, token):
self.token = token
def __call__(self, request):
request.headers[“Authorization”] = f”Bearer {self.token}”
return request
response = requests.get(“https://api.github.com/user”, auth=TokenAuth(“your_token”))
استفاده از Session برای بهینهسازی
اگر قرار است چندین درخواست به یک سرور خاص ارسال کنید، بهتر است از Session استفاده کنید. این شیء اجازه میدهد کوکیها و تنظیمات بین درخواستها حفظ شوند:
with requests.Session() as session:
session.auth = (“user”, “pass”)
response1 = session.get(“https://httpbin.org/cookies/set/sessioncookie/123”)
response2 = session.get(“https://httpbin.org/cookies”)
خطاها و مدیریت تایماوت
گاهی اینترنت قطع میشود یا پاسخ خیلی دیر میرسد. در این مواقع باید بتوانید خطا را مدیریت کنید. مثلاً:
try:
response = requests.get(“https://api.github.com”, timeout=3.05)
response.raise_for_status()
except requests.Timeout:
print(“Timeout occurred!”)
except requests.RequestException as e:
print(f”Request failed: {e}”)
وب اسکرپینگ با کتابخانه requests در پایتون و BeautifulSoup
یکی از مهمترین کاربردهای کتابخانه requests در پایتون web scraping است. به کمک کتابخانه BeautifulSoup میتوانید محتوای صفحات را تحلیل و اطلاعات دلخواهتان را استخراج کنید:
import requests
from bs4 import BeautifulSoup
response = requests.get(“https://www.example.com”)
soup = BeautifulSoup(response.text, “html.parser”)
print(soup.title.text)
سخن پایانی
یادگیری کتابخانه requests در پایتون برای هر برنامهنویسی لازم است. برای نوشتن اپلیکیشن ساده یا APIهای پیچیده این کتابخانه یکی از مهمترین ابزارهایتان خواهد بود. یادتان نرود که با تکرار، تمرین و پیادهسازی پروژههای واقعی، میتوانید این مهارت را کاملاً در وجود خودتان نهادینه کنید.
آکادمی چابک در زمینه یادگیری پایتون دورههای بهروزی را طراحی کرده است که علاقهمندان در هر سطحی بتوانند در آنها شرکت کنند. دورههای آکادمی چابک از مباحث پایهای مانند ساختار زبان پایتون شروع میشوند و تا کار با کتابخانههای کاربردی مانند Requests ادامه پیدا میکنند. برای اطلاعات بیشتر با کارشناسان ما تماس بگیرید.
منبع:
دیدگاهتان را بنویسید