如何使用Python通过HTTP下载文件?

我有一个小工具,用来按计划从一个网站下载MP3,然后建立/更新一个播客XML文件,显然我已经把它添加到iTunes。

创建/更新XML文件的文本处理是用Python写的。然而,我使用Windows.bat文件中的wget来下载实际的MP3。但我更希望整个工具是用Python编写的。

但我很难找到一种在Python中实际下载文件的方法,因此我求助于`wget'。

那么,我如何用Python下载文件呢?

解决办法

在Python 2中,使用标准库附带的urllib2。

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

这是使用该库的最基本方式,不包括任何错误处理。 你也可以做更复杂的事情,比如改变头文件。 文档可以在这里找到。

评论(6)
import urllib2
mp3file = urllib2.urlopen("http://www.example.com/songs/mp3.mp3")
with open('test.mp3','wb') as output:
  output.write(mp3file.read())

open('test.mp3','wb')中的wb以二进制模式打开一个文件(并删除任何现有的文件),因此你可以用它来保存数据,而不仅仅是文本。

评论(5)

我同意Corey的观点,urllib2比urllib更完整,如果你想做更复杂的事情,很可能应该使用这个模块,但为了使答案更完整,如果你只想做基本的事情,urllib是一个更简单的模块。

import urllib
response = urllib.urlopen('http://www.example.com/sound.mp3')
mp3 = response.read()

会很好用。或者,如果你不想处理"响应"对象,你可以直接调用read()

import urllib
mp3 = urllib.urlopen('http://www.example.com/sound.mp3').read()
评论(0)