【问题标题】:HTTP Error 403: Forbidden while downloading file using urllibHTTP 错误 403:使用 urllib 下载文件时被禁止
【发布时间】: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


    【解决方案1】:

    这看起来是一个实际的 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)
    

    【讨论】:

    • 但是如果我有一个可执行文件,如何保存数据呢?
    • @JakubBláha 我更新了我的答案。看起来urllib.urlretrieve() 不允许您设置标题。我会推荐使用 Python 请求,它绝对是更被接受的方式来做你想做的事情,希望它有所帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2020-07-29
    • 1970-01-01
    • 2018-01-02
    • 2015-11-29
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多