Python urllib赢得';由于权限原因,无法下载文件,但wget将

Python urllib赢得';由于权限原因,无法下载文件,但wget将,python,http,urllib2,wget,Python,Http,Urllib2,Wget,我正在尝试使用Python的urllib2通过其URL下载一个MP3文件 mp3file = urllib2.urlopen(url) output = open(dst,'wb') output.write(mp3file.read()) output.close() 我得到了一个urllib2.HTTPError:HTTP错误403:probled错误。 尝试urllib也会失败,但会以静默方式进行 urllib.urlretrieve(url, dst) 但是,如果我使用wget,我可

我正在尝试使用Python的
urllib2
通过其URL下载一个MP3文件

mp3file = urllib2.urlopen(url)
output = open(dst,'wb')
output.write(mp3file.read())
output.close()
我得到了一个
urllib2.HTTPError:HTTP错误403:probled
错误。 尝试
urllib
也会失败,但会以静默方式进行

urllib.urlretrieve(url, dst)
但是,如果我使用
wget
,我可以成功下载该文件

我注意到了“”中提到的两种方法之间的一般差异,但它们似乎不适用于这里


wget
是否在协商
urllib2
无法协商的权限?如果是这样的话,那么在
urllib2
中复制什么以及如何复制它?

可能是服务器端的事情,例如阻塞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)

这完全取决于服务器,您是否尝试过
wget--verbose
查看发生了什么?您是否尝试过添加标题:似乎
wget
的默认输出级别是verbose,因此当显式给出标志时,它不会给我任何额外的信息。我会试着在头球上玩。。。