دانلود در پایتون به زبان ساده !


یک والپیپیر زیبا
یک والپیپیر زیبا

سلام. مهدی ام دانشجوی مهندسی نرم افزار. در این پست میخوام به زبان ساده در مورد دانلود فایل ها از طریق پایتون بنویسم.برای اینکار راه های زیادی وجود داره. برای دانلود از طریق HTTP میتونید از دو تا کتابخونه مختلف استفاده کنید، یکی requests و اون یکی urllib. در این مقاله در مورد requests میگم و بعد روش دانلود باهاش رو باهم یاد می گیریم.


پیشنیاز ها : پایتون در حد مبتدی . کار با فایل ها / سطح آموزش : مبتدی
اگه هنوز کار با فایل ها رو خوب بلد نیستید ، میتونید از این لینک استفاده کنید.

کار کردن با REQUESTS

ریکوئست یک کتابخونه بسیار پر استفاده از پایتون و اگه با پایتون آشنا باشید احتمالا با ریکوئست هم کار کردید. از طریق این کتابخونه میتونید درخواست های HTTP1.1 ارسال کنید.

برای نصب از طریق pip به روش زیر اقدام میکنیم:

pip install requests

خب حالا که نصب کردیم بیاید یکم باهاش کار کنیم : اولین کار import کردن کتابخونه!

import requests

کتابخونه requests میتونه درخواست های get , post , put, delete , ... رو ارسال کنه . برای دانلود ما از درخواست get استفاده میکنیم . که به شکل زیر انجام میشه:

import requests 
page = requests.get("http://www.google.com")

حالا درون متغیر page چیه بنظرتون؟ با تکه کد زیر معلوم میشه که شی ای از نوع Response است.

print(type(page))
 <class 'requests.models.Response'>

خب این شی تعدادی متد و ویژگی داره من چندتاشو می‌گم بقیشو خودتون کشف کنید:

  • اولی کدِ وضعیتِ درخواستِ انجام شده رو میده
  • دومی انکدینگ صفحه ای که درخواست کردید رو بهتون میده
  • سومی متن محتوای پاسخ رو بر میگردونه که اینجا متن html صفحه است
  • چهارمی هم عین سومی هست .
page.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 دانلود میکنیم :

import 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, ...) کافیه هنگام باز کردن فایل ، فایل با پسوند مناسب باز کنید.



ممنون از اینکه خوندی . اگه با من کار داشتید از این لینک یا ایمیل من اقدام کنید .