由于权限,Python urllib不会下载文件,但wget会

时间:2014-04-16 12:07:35

标签: python http urllib2 wget

我尝试使用Python urllib2通过其网址下载MP3文件。

mp3file = urllib2.urlopen(url)
output = open(dst,'wb')
output.write(mp3file.read())
output.close()

我收到urllib2.HTTPError: HTTP Error 403: Forbidden错误。 尝试urllib也会失败,但是会默默无闻。

urllib.urlretrieve(url, dst)

但是,如果我使用wget,我可以成功下载该文件。

我已经注意到" Difference between Python urllib.urlretrieve() and wget"中提到的两种方法之间的一般差异,但它们似乎并不适用于此。

wget是否正在协商urllib2无法协商的权限?如果是,那么,我如何在urllib2中复制它?

1 个答案:

答案 0 :(得分:1)

可能是服务器端的东西 - 例如阻止python用户代理。尝试使用wget用户代理:Wget/1.13.4 (linux-gnu)

在Python 2中:

import urllib

# Change header for User-Agent
class AppURLopener(urllib.FancyURLopener):
    version = "Wget/1.13.4 (linux-gnu)"
url = "http://www.example.com/test_file"
fname = "test_file"
urllib._urlopener = AppURLopener()
urllib.urlretrieve(url, fname)