دانلود در پایتون به زبان ساده !
سلام. مهدی ام دانشجوی مهندسی نرم افزار. امروز میخوام به زبان ساده در مورد دانلود فایل ها از طریق پایتون بنویسم.برای دانلود فایل ها با پایتون راه های زیادی وجود داره. برای دانلود از طریق HTTP میتونید از دو تا کتابخونه مختلف استفاده کنید، یکی requests و اون یکی urllib. در این مقاله در مورد requests میگم و بعد روش دانلود باهاش رو باهم یاد می گیریم.
پیشنیاز ها : پایتون در حد مبتدی . کار با فایل ها / سطح آموزش : مبتدی
اگه هنوز کار با فایل ها رو خوب بلد نیستید ، میتونید از این لینک استفاده کنید.
کار کردن با REQUESTS
ریکوئست یکی از پر استفاده ترین کتابخونه های زبان پایتونه و اگه با پایتون آشنا باشید احتمالا با ریکوئست هم کار کردید. از طریق این کتابخونه میتونید درخواست های HTTP1.1 ارسال کنید.
برای نصب از طریق pip به روش زیر اقدام میکنیم:
1pip install requests
خب حالا که نصب کردیم بیاید یکم باهاش کار کنیم : اولین کار import کردن کتابخونه!
1import requests
کتابخونه requests میتونه درخواست های get , post , put, delete , ... رو ارسال کنه . برای دانلود ما از درخواست get استفاده میکنیم . که به شکل زیر انجام میشه:
12import requests
page = requests.get("http://www.google.com")
حالا درون متغیر page چیه بنظرتون؟ با تکه کد زیر معلوم میشه که شی ای از نوع Response است.
12print(type(page))
<class 'requests.models.Response'>
خب این شی تعدادی متد و ویژگی داره ولی چندتاشو بقیشو خودتون کشف کنید:
- اولی کد وضعیت درخواست انجام شده رو میده
- دومی انکدینگ صفحه ای که درخواست کردید رو بهتون میده
- سومی متن محتوای پاسخ رو بر میگردونه که اینجا متن html صفحه است
- چهارمی هم عین سومی هست .
12345678page.status_code
// 200
page.encoding
// 'ISO-8859-1'
page.text
// u'<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world\'s information, including webpages, images , ...
page.content
// '<!doctype html><html itemscope="" itemtype="http://schema.org/WebPage" lang="en"><head><meta content="Search the world\'s information, including webpages, images,
فرق مورد سوم و چهارم در نوع (type) اونهاست . text بصورت unicode و content بصورت str محتوا میده ولی بهتره (در پایتون ۳) از content استفاده کنید .
برای کسب اطلاعات بهتر و کاملتر به مستندات این کتابخونه مراجعه کنید.
بریم سراغ اصل بحث!
خب حالا حاضریم برای دانلود فایل ، تو مثال زیر یه عکس (عکس اصلی پست ) رو با کتابخونه requests دانلود میکنیم :
12345import requests
url = "https://files.virgool.io/upload/users/501/posts/kt6x7pmetr3h/ntsy0szydk5z.jpeg"
data = requests.get(url).content
with open("file.jpeg","wb") as f:
f.write(data)
در توضیح کد بالا باید بگم که :
- برای عدم مشکل در انواع کاراکتر ها (اگه فایلتون متنی باشه ) حتما از content استفاده کنید و از text استفاده نکنید.
- با استفاده از ساختار with و open میتونیم فایل رو به نحوی باز کنیم که بعد از اتمام کار فایل بسته بشه و نیاز به بستن دستی نداشته باشه.
- مُد استفاده شده " wb " به معنی اینه که فایل رو برای نوشتن به صورت باینری باز کردیم.
- برای دانلود هر نوع فایلی (pdf , mp3,mp4, ...) کافیه هنگام باز کردن فایل ، فایل با پسوند مناسب باز کنید.
ممنون از اینکه خوندی . اگه با من کار داشتید از این لینک یا ایمیل من اقدام کنید .