در این مقاله، به بررسی نحوه دانلود فایل‌ها از اینترنت با requests در زبان برنامه‌نویسی پایتون خواهیم پرداخت. Requests یکی از پرکاربردترین و محبوب‌ترین کتابخانه‌ها برای انجام درخواست‌های HTTP است و به سهولت می‌توان با آن ارتباط برقرار کرد.

۱. نصب کتابخانه Requests

برای استفاده از کتابخانه Requests، ابتدا باید آن را نصب کنید. برای این کار از pip استفاده کنید:

pip install requests

۲. ارسال درخواست دانلود فایل

سپس می‌توانیم با استفاده از روش get در کتابخانه Requests، درخواست دانلود فایل را ارسال کنیم. مثلاً می‌خواهیم فایلی از URL خاص دانلود کنیم:

import requests

url = 'https://example.com/file.zip'
response = requests.get(url)

if response.status_code == 200:
    with open('file.zip', 'wb') as f:
        f.write(response.content)
    print('فایل با موفقیت دانلود شد!')
else:
    print('خطا در دانلود فایل:', response.status_code)

در این کد، ابتدا URL فایل مورد نظر را تعیین می‌کنیم. سپس با استفاده از requests.get() درخواست GET برای دانلود فایل را ارسال می‌کنیم. اگر وضعیت پاسخ 200 باشد (که به معنای موفقیت‌آمیز بودن درخواست است)، فایل به صورت باینری باز می‌شود و محتوای آن در فایل محلی ذخیره می‌شود.

۳. مدیریت خطاها

در هنگام دانلود فایل‌ها، ممکن است با خطاهایی مواجه شویم. برای مثال، اگر URL موجود نباشد یا سرور پاسخ ندهد. برای این منظور می‌توانیم از بلوک try-except استفاده کنیم:

try:
    response = requests.get(url)
    response.raise_for_status()  # باعث بالا رفتن خطا در صورت وضعیت منفی می‌شود
    with open('file.zip', 'wb') as f:
        f.write(response.content)
    print('فایل با موفقیت دانلود شد!')
except requests.exceptions.HTTPError as http_err:
    print(f'خطای HTTP: {http_err}')
except Exception as e:
    print(f'خطای غیر منتظره: {e}')

در اینجا، با استفاده از ()raise_for_status می‌توانیم هرگونه خطای HTTP را شناسایی کنیم و در صورت وجود آن، پیام خطا را چاپ کنیم.

آموزش کتابخانه ریکوئست (رایگان)

۴. دانلود فایل‌های بزرگ

برای دانلود فایل‌های بزرگ، بهتر است فایل را به صورت تکه‌تکه دانلود کنیم تا از مصرف حافظه جلوگیری شود. برای این کار می‌توان از پارامتر stream استفاده کرد:

response = requests.get(url, stream=True)

if response.status_code == 200:
    with open('file.zip', 'wb') as f:
        for chunk in response.iter_content(chunk_size=1024):  # 1 کیلوبایت در هر تکه
            f.write(chunk)
    print('فایل بزرگ با موفقیت دانلود شد!')
else:
    print('خطا در دانلود فایل:', response.status_code)

در این حالت، با استفاده از ()iter_content می‌توانیم محتویات را تکه‌تکه خوانده و به فایل ما بنویسیم، که این کار باعث کاهش مصرف حافظه می‌شود.

۵. دانلود فایل با نام سفارشی

اگر می‌خواهید فایل دانلود شده را با یک نام خاص ذخیره کنید، می‌توانید نام فایل را در زمان باز کردن آن مشخص کنید:

file_name = 'my_custom_file.zip'  # نام دلخواه برای فایل
with open(file_name, 'wb') as f:
    f.write(response.content)

۶. نتیجه‌ گیری

در این مقاله، با نحوه دانلود فایل‌ها از اینترنت با استفاده از کتابخانه Requests در پایتون آشنا شدیم. می‌توانیم با استفاده از این کتابخانه به سادگی فایل‌ها را دانلود کرده و در برنامه‌های خود به آن‌ها دسترسی داشته باشیم. همچنین با مدیریت خطاها و دانلود فایل‌های بزرگ، می‌توانیم از یک تجربه کاربری بهتر برخوردار شویم.

این امکان وجود دارد که بر اساس نیازهای خود، برنامه‌ها و اسکریپت‌های پیچیده‌تری بسازید. پایتون و Requests ابزار قدرتمندی برای ارتباط با وب و دانلود داده‌ها فراهم می‌کنند.