我有一个小工具,用于按计划从网站下载 MP3,然后构建 / 更新播客 XML 文件,我显然已将其添加到 iTunes。
创建 / 更新 XML 文件的文本处理是用 Python 编写的。我在 Windows .bat
文件中使用 wget 来下载实际的 MP3。我宁愿用 Python 编写整个实用程序。
我努力寻找一种方法来实际下载 Python 中的文件,因此我采用了wget
。
那么,我如何使用 Python 下载文件?
还有一个,使用urlretrieve
:
import urllib
urllib.urlretrieve ("http://www.example.com/songs/mp3.mp3", "mp3.mp3")
(对于 Python 3+,使用'import urllib.request' 和 urllib.request.urlretrieve)
又一个,带有 “进度条”
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()
在 2012 年,使用python 请求库
>>> import requests
>>>
>>> url = "http://download.thinkbroadband.com/10MB.zip"
>>> r = requests.get(url)
>>> print len(r.content)
10485760
您可以运行pip install requests
来获取它。
请求与备选方案相比具有许多优点,因为 API 更简单。如果您必须进行身份验证,则尤其如此。在这种情况下,urllib 和 urllib2 非常不直观和痛苦。
2015 年 12 月 30 日
人们对进度条表示钦佩。这很酷,当然。现在有几种现成的解决方案,包括tqdm
:
from tqdm import tqdm
import requests
url = "http://download.thinkbroadband.com/10MB.zip"
response = requests.get(url, stream=True)
with open("10MB", "wb") as handle:
for data in tqdm(response.iter_content()):
handle.write(data)
这基本上是 30 个月前 @kvance 所描述的实现。