دانلود فایل با پایتون
زبان پایتون این امکان را به شما میدهد که با چندین روش فایل دانلود کنید. این کار با کتابخانههای requests و urllib امکانپذیر است. در این آموزش خواهیم دید که چگونه فایلهای مختلف را با این کتابخانهها دانلود کنیم.
کتابخانه REQUEST
کتابخانه requests یکی از معروفترین کتابخانهها در پایتون است. requests این امکان را به شما میدهد تا از طریق پروتکل HTTP/1.1 درخواست بفرستید و جواب آن را دریافت کنید.
نصب REQUESTS
در قدم اول باید این کتابخانه را نصب کنیم. با استفاده از دستور زیر این کار را انجام میدهیم:
pip install requests
در قدم بعدی باید کتابخانه را import کنیم:
import requests
اگر نصب موفقیت آمیز بود، دستور بالا بدون مشکل اجرا میشود.
درخواست GET
برای درخواست از نوع GET به صورت زیر عمل میکنیم.
req = requests.get("https://zerotohero.ir/") print(req) req = requests.get("https://zerotohero.ir/something") print(req) # Output: <Response [200]> # Output: <Response [404]>
برای اینکه ببینیم درخواست ما با موفقیت انجام شد یا نه، req را نمایش میدهیم که عدد ۲۰۰ نشان دهندهی موفق بودن درخواست است. عدد ۴۰۴ هم نشاندهندهی پیدا نشدن این درخواست است.
برای دیدن نوع encoding درخواست نیز از مشخصه encoding استفاده میکنیم.
print(req.encoding) # Output: UTF-8
برای دسترسی به source code صفحه درخواست هم از مشخصه text استفاده میکنیم:
req = requests.get("https://zerotohero.ir/") print(req.text) # Output: '''<!DOCTYPE html> <html itemscope itemtype="http://schema.org/WebPage" dir="rtl" prefix="og: http://ogp.me/ns#"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="profile" href="https://gmpg.org/xfn/11"> <link rel="pingback" href="https://zerotohero.ir/xmlrpc.php"> <title>قهرمان دنیای خودت باش | صفر تا قهرمان | Zero To Hero</title> '''
درخواست POST
درخواست POST درخواستی است که برای ایجاد و یا بروزرسانی دادهها استفاده میشود.
فرض کنید که فرم ورودی در اختیار دارید که ایمیل و رمزعبور را به عنوان ورودی میگیرید و زمانی که بر روی دکمه تایید کلیک کنید، درخواستی به سرور فرستاده میشود. برای ارسال درخواست از کد زیر استفاده میکنیم:
data = {"email":"test@gmail.com", "password":"12345"} req = requests.post("https://zerotohero.ir/login", params = data)
بسته URLLIB
این بسته که برای کار با URLها از چندین ماژول استفاده میکند که عبارتند از:
- urllib.request که برای باز کردن و خواندن URLها استفاده میشود.
- urllib.error که برای مدیریت کردن خطاهایی است که توسط urllib.request بوجود آمدهاند.
ماژول urllib.request رابطی بسیار ساده برای ایجاد درخواستها بوجود میآورد و همچنین برای مدیریتکردن احراز هویت گزینههای بیشتری در اختیار برنامه نویس قرار میدهد.
در کد زیر درخواستی توسط متد urlopen فرستاده شد:
import urllib req = urllib.request.urlopen('https://zerotohero.ir/') print(req.status) # Output : 200
دریافت منبع از اینترنت هم توسط متد urlretrieve انجام میشود.
دانلود عکس
import urllib url = 'https://www.python.org/static/opengraph-icon-200x200.png' urllib.request.urlretrieve(url, "image-urllib.png")
import requests url = 'https://www.python.org/static/opengraph-icon-200x200.png' r = requests.get(url) with open("image-requests.png", "wb") as code: code.write(r.content)
دانلود فایل PDF
import urllib url = 'https://media.readthedocs.org/pdf/urllib3/latest/urllib3.pdf' urllib.request.urlretrieve(url, "pdf-urllib.pdf")
import requests url = 'https://media.readthedocs.org/pdf/urllib3/latest/urllib3.pdf' r = requests.get(url) with open("pdf-requests.pdf", "wb") as code: code.write(r.content)
دانلود فایل Zip
import urllib url = 'https://docs.python.org/2/archives/python-2.7.14-docs-pdf-a4.zip' urllib.urlretrieve(url, "zip-urllib.zip")
import requests url = 'https://docs.python.org/2/archives/python-2.7.14-docs-pdf-a4.zip' r = requests.get(url) with open("zip-requests.zip", "wb") as code: code.write(r.content)
در این مقاله سعی شد تفاوتهای بین requests و urllib گفته شود و با اینکه استفاده از urllib آسانتر است ولی requests بدلیل سادگی و محبوبیت زیاد توصیه میشود. در صورتی که تمایل دارید که با کتابخانه requests و یا urllib بیشتر آشنا شوید، به لینک مستندات آن مراجعه کنید.
مطالب زیر را حتما مطالعه کنید
آشنایی با توابع در پایتون
راه اندازی Django به همراه Postgresql، Nginx و Gunicorn
آشنایی با حلقه ها در پایتون
آشنایی با رشته در پایتون
برنامه نویسی چند نخی در پایتون
تولید اعداد Random با Python
2 Comments
Join the discussion and tell us your opinion.
دیدگاهتان را بنویسید لغو پاسخ
برای نوشتن دیدگاه باید وارد بشوید.
سلام
تشکر بابت مطالب بسیار خوبو اموزش هایی که دارین.
میبخشید در مورد دستور with امکان دارد توضیح دهید؟
من تازه شروع به یادگیری پایتون کرده ام.
با تشکر
سلام دوست عزیز
با استفاده از دستور with دیگه نیاز نیست که متغیری تعریف شود که تا آخر برنامه در حافظه سیستم ذخیره شود. زمانی که بلوک with تموم شود حافظه ی متتغیر ساخته شده هم آزاد میشود.
برای مثال به جای
(code=open("pdf-requests.pdf", "wb"
میتوان از:with open("pdf-requests.pdf", "wb") as code
استفاده کزد.