دانلود در پایتون به زبان ساده !
شنبه 7 بهمن 1396 3:06 PM
سلام. مهدی ام دانشجوی مهندسی نرم افزار. امروز میخوام به زبان ساده در مورد دانلود فایل ها از طریق پایتون بنویسم.برای دانلود فایل ها با پایتون راه های زیادی وجود داره. برای دانلود از طریق HTTP میتونید از دو تا کتابخونه مختلف استفاده کنید، یکی requests و اون یکی urllib. در این مقاله در مورد 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'>
خب این شی تعدادی متد و ویژگی داره ولی چندتاشو بقیشو خودتون کشف کنید:
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)
در توضیح کد بالا باید بگم که :
ممنون از اینکه خوندی . اگه با من کار داشتید از این لینک یا ایمیل من اقدام کنید .