از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
دانلود فایل ها با پایتون
سرفصلهای مطلب
دانلود فایل ها از منابع مختلف آنلاین یکی از مهم ترین و رایج ترین کارهای برنامه نویسی است روی وب. اهمیت دانلود فایل را می توان با این واقعیت برجسته کرد که تعداد زیادی از برنامه های کاربردی موفق به کاربران امکان دانلود فایل ها را می دهند. در اینجا فقط چند توابع برنامه وب که نیاز به دانلود فایل دارند آورده شده است:
- اشتراک گذاری فایل
- داده کاوی
- بازیابی کد وب سایت (CSS، JS و غیره)
- رسانه های اجتماعی
اینها تنها تعدادی از برنامه های کاربردی هستند که به ذهنتان می رسد، اما مطمئن هستم که می توانید به بسیاری از برنامه های دیگر فکر کنید. در این مقاله نگاهی خواهیم داشت به برخی از محبوب ترین روش هایی که می توانید فایل ها را با پایتون دانلود کنید.
با استفاده از ماژول urllib.request
این urllib.request ماژول برای باز کردن یا دانلود یک فایل از طریق HTTP استفاده می شود. به طور خاص، urlretrieve
روش این ماژول همان چیزی است که ما برای بازیابی واقعی فایل استفاده خواهیم کرد.
برای استفاده از این روش باید دو آرگومان را به آن ارسال کنید urlretrieve
روش: آرگومان اول URL منبعی است که می خواهید بازیابی کنید و آرگومان دوم مسیر فایل محلی است که می خواهید فایل دانلود شده را در آن ذخیره کنید.
بیایید به مثال زیر نگاهی بیندازیم:
import urllib.request
print('Beginning file download with urllib2...')
url = 'http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg'
urllib.request.urlretrieve(url, '/Users/scott/Downloads/cat.jpg')
در کد بالا ابتدا ما import را urllib.request
مدول. بعد یک متغیر ایجاد می کنیم url
که حاوی مسیر فایلی است که باید دانلود شود. در نهایت، ما به urlretrieve
روش و پاس دادن آن url
متغیر به عنوان اولین آرگومان، “/Users/scott/Downloads/cat.jpg” به عنوان پارامتر دوم برای مقصد فایل. به خاطر داشته باشید که شما می توانید هر نام فایلی را به عنوان پارامتر دوم ارسال کنید و آن مکان و نامی است که فایل شما خواهد داشت، با این فرض که مجوزهای صحیح را دارید.
اسکریپت بالا را اجرا کنید و به دایرکتوری “Downloads” خود بروید. شما باید فایل دانلود شده خود را با نام “cat.jpg” ببینید.
توجه داشته باشید: این urllib.request.urlretrieve
در پایتون 3 یک “رابط قدیمی” در نظر گرفته می شود و ممکن است در آینده منسوخ شود. به همین دلیل، استفاده از آن را به نفع یکی از روش های زیر توصیه نمی کنم. ما آن را به دلیل محبوبیت در پایتون 2 در اینجا گنجانده ایم.
با استفاده از ماژول urllib2
راه دیگر برای دانلود فایل ها در پایتون از طریق ماژول urllib2 است. این urlopen
متد ماژول urllib2 یک شی را برمی گرداند که حاوی داده های فایل است. برای خواندن مطالب
توجه داشته باشید که در پایتون 3، urllib2
در ادغام شد urllib
مانند urllib.request
و urllib.error
. بنابراین، این اسکریپت فقط در پایتون 2 کار می کند.
import urllib2
filedata = urllib2.urlopen('http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg')
datatowrite = filedata.read()
with open('/Users/scott/Downloads/cat2.jpg', 'wb') as f:
f.write(datatowrite)
این open
متد دو پارامتر را می پذیرد، مسیر فایل محلی و حالتی که داده ها در آن نوشته می شوند. در اینجا “wb” بیان می کند که open
متد باید مجوز نوشتن داده های باینری را در فایل داده شده داشته باشد.
اسکریپت بالا را اجرا کنید و به دایرکتوری “Downloads” خود بروید. شما باید سند pdf دانلود شده را به صورت “cat2.jpg” ببینید.
با استفاده از ماژول درخواست
همچنین می توانید فایل ها را با استفاده از درخواست ها مدول. این get
روش از requests
ماژول برای دانلود محتویات فایل در فرمت باینری استفاده می شود. سپس می توانید از open
روش باز کردن یک فایل روی سیستم شما، درست مانند روش قبلی، urllib2.urlopen
.
به اسکریپت زیر دقت کنید:
import requests
print('Beginning file download with requests')
url = 'http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg'
r = requests.get(url)
with open('/Users/scott/Downloads/cat3.jpg', 'wb') as f:
f.write(r.content)
print(r.status_code)
print(r.headers('content-type'))
print(r.encoding)
در اسکریپت بالا، open
روش یک بار دیگر برای نوشتن داده های باینری در فایل محلی استفاده می شود. اگر اسکریپت بالا را اجرا کنید و به دایرکتوری “Downloads” خود بروید، باید فایل JPG تازه دانلود شده خود را با نام “cat3.jpg” ببینید.
با requests
ماژول، شما همچنین می توانید به راحتی متا داده های مربوط به درخواست خود، از جمله کد وضعیت، سرصفحه ها و موارد دیگر را بازیابی کنید. در اسکریپت بالا می توانید روش دسترسی ما به برخی از این متا داده ها را مشاهده کنید.
همین امر در مورد پارامترهای اضافی مورد نیاز نیز صدق می کند روی درخواست HTTP GET برای مثال، اگر نیاز به اضافه کردن هدرهای مشتری دارید، تنها کاری که باید انجام دهید این است که a dict
با هدرهای خود و ارسال آن به شما get
درخواست:
headers = {'user-agent': 'test-app/0.0.1'}
r = requests.get(url, headers=headers)
وجود دارد تن گزینه ها و ویژگی های بیشتری برای این کتابخانه وجود دارد، بنابراین عالی بودن آنها را بررسی کنید راهنمای کاربر برای اطلاعات بیشتر روی روش استفاده از آن
با استفاده از ماژول wget
یکی از سادهترین راهها برای دانلود فایلها در پایتون، از طریق آن است wget ماژول، که نیازی به باز کردن فایل مقصد ندارد. این download
روش از wget
ماژول فایل ها را فقط در یک خط دانلود می کند. این روش دو پارامتر را می پذیرد: مسیر URL فایل برای دانلود و مسیر محلی که فایل باید در آن ذخیره شود.
import wget
print('Beginning file download with wget module')
url = 'http://i3.ytimg.com/vi/J---aiyznGQ/mqdefault.jpg'
wget.download(url, '/Users/scott/Downloads/cat4.jpg')
اسکریپت بالا را اجرا کنید و به دایرکتوری “Downloads” خود بروید. در اینجا باید فایل «cat4.jpg» را که به تازگی دانلود کرده اید ببینید.
نتیجه
در این مقاله چهار مورد از متداولترین روشها برای دانلود فایلها در پایتون را ارائه کردیم. من شخصا ترجیح می دهم از آن استفاده کنم request
ماژول دانلود فایل به دلیل ترکیبی از سادگی و قدرت. با این حال، پروژه شما ممکن است دارای محدودیت هایی باشد که شما را از استفاده از کتابخانه های شخص ثالث باز می دارد، در این صورت من از urllib2
ماژول (برای پایتون 2) یا urllib.request
ماژول (برای پایتون 3).
کدام کتابخانه را ترجیح می دهید و چرا؟ در نظرات به ما اطلاع دهید!
(برچسبها به ترجمه)# python
منتشر شده در 1403-01-29 10:19:03