【发布时间】:2018-01-03 14:47:30
【问题描述】:
我有这行代码:urllib.request.urlretrieve('http://lolupdater.com/downloads/LPB.exe', 'LPBtest.exe'),但是当我运行它时,它会抛出错误urllib.error.HTTPError: HTTP Error 403: Forbidden。
【问题讨论】:
标签: python-3.x file download urllib
我有这行代码:urllib.request.urlretrieve('http://lolupdater.com/downloads/LPB.exe', 'LPBtest.exe'),但是当我运行它时,它会抛出错误urllib.error.HTTPError: HTTP Error 403: Forbidden。
【问题讨论】:
标签: python-3.x file download urllib
这看起来是一个实际的 HTTP 403: Forbidden 错误。 Python urllib 在遇到 HTTP 状态代码时抛出异常(记录在 here)。 403 通常意味着:“服务器理解请求,但拒绝执行它。”您将需要添加 HTTP 标头来识别您自己并避免 403 错误,Python urllib headers 上的文档。以下是使用urlopen 的示例:
import urllib.request
req = urllib.request.Request('http://lolupdater.com/downloads/LPB.exe', headers={'User-Agent': 'Mozilla/5.0'})
response = urllib.request.urlopen(req)
在 Python 3 中,urllib.urlretrieve() 是 considered legacy。我会为此推荐Python Requests,这是一个工作示例:
import requests
url = 'http://lolupdater.com/downloads/LPB.exe'
r = requests.get(url)
with open('LPBtest.exe', 'wb') as outfile:
outfile.write(r.content)
【讨论】:
urllib.urlretrieve() 不允许您设置标题。我会推荐使用 Python 请求,它绝对是更被接受的方式来做你想做的事情,希望它有所帮助。