• 0

كيف أستطيع تنزيل ملف عن طريق البايثون؟

أريد أن أقوم بكتابة برنامج لتنزيل ملفات mp3 من الأنترنت، فما هي المكتبة التي يجب علي أن أستخدمها لتنزيل هذه الملفات ؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

في الحقيقة توجد العديد من الطرق لتنزيل الملفات من شبكة الأنترنت، فلو كنت تستخدم البايثون 2 فيمكنك استخدام مكتبة urllib2 التي تأتي بشكل افتراضي مع المكتبات القياسية، وهذا مثال بسيط على استخدامها:

import urllib2
response = urllib2.urlopen('http://www.example.com/')
html = response.read()

ملاحظة: هذه الطريقة لن تعمل في حالة كان هنالك فراغات في الرابط، ولقد تم حل هذه المشكلة في البايثون 3.
كما يمكنك استخدام urlretrieve من مكتبة urllib كما في الشكل التالي:

import urllib
urllib.urlretrieve ("http://www.example.com/files/mp3.mp3", "mp3.mp3")

ويمكنك أيضا إنشاء تطبيق بسيط لتحميل الملفات مع شريط التقدم الذي يقوم بحساب نسبة اكتمال تحميل الملف كما في المثال التالي:

import urllib2

url = "http://download.thinkbroadband.com/10MB.zip"

file_name = url.split('/')[-1]
u = urllib2.urlopen(url)
f = open(file_name, 'wb')
meta = u.info()
file_size = int(meta.getheaders("Content-Length")[0])
print "Downloading: %s Bytes: %s" % (file_name, file_size)

file_size_dl = 0
block_sz = 8192
while True:
    buffer = u.read(block_sz)
    if not buffer:
        break

    file_size_dl += len(buffer)
    f.write(buffer)
    status = r"%10d  [%3.2f%%]" % (file_size_dl, file_size_dl * 100. / file_size)
    status = status + chr(8)*(len(status)+1)
    print status,

f.close()

المصدر

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن