Python 为什么我的urllib.request返回http错误403?

Python 为什么我的urllib.request返回http错误403?,python,web-scraping,error-code,Python,Web Scraping,Error Code,我试图制作一个程序,使用python从一个站点下载一系列产品图片。该网站以特定的url格式存储其图像,其中XYZ是代表产品品牌的三个字母,abcde是介于00000和30000之间的一系列数字。 这是我的密码: import urllib.request def down(i, inp): full_path = 'images/image-{}.jpg'.format(i) url = "https://www.sitename.com/{}{}.jpg"

我试图制作一个程序,使用python从一个站点下载一系列产品图片。该网站以特定的url格式存储其图像,其中XYZ是代表产品品牌的三个字母,abcde是介于00000和30000之间的一系列数字。 这是我的密码:

import urllib.request

def down(i, inp):
    full_path = 'images/image-{}.jpg'.format(i)
    url = "https://www.sitename.com/{}{}.jpg".format(inp,i)
    urllib.request.urlretrieve(url, full_path)

    print("saved")
    return None

inp = input("brand :" )

i = 20100

while i <= 20105:
    x = str(i)
    y = x.zfill(5)
    z = "https://www.sitename.com/{}{}.jpg".format(inp,y)
    print(z)
    down(y, inp)
    i += 1
导入urllib.request
def下降(i,inp):
完整路径='images/image-{}.jpg'。格式(i)
url=”https://www.sitename.com/{}{}.jpg.格式(inp,i)
urllib.request.urlretrieve(url,完整路径)
打印(“已保存”)
一无所获
inp=输入(“品牌:”)
i=20100

虽然我你不能预先知道哪些URL是你无法访问的,但是你可以尝试一下下载,除了:

import urllib.request, urllib.error

...

def down(i, inp):
    full_path = 'images/image-{}.jpg'.format(i)
    url = "https://www.sitename.com/{}{}.jpg".format(inp,i)
    try:
        urllib.request.urlretrieve(url, full_path)
        print("saved")
    except urllib.error.HTTPError as e:
        print("failed:", e)


    return None

在这种情况下,每当无法获取URL时,它只会打印例如“failed:HTTP Error 403:Forbidden”(失败:HTTP错误403:Forbidden),程序将继续。

如错误消息所述,您(或您的IP)已被禁止访问<代码>HTTP错误403:禁止
当web服务器上运行的服务嗅到机器人(重复点击、嗅探等)从而自动阻止IP时,可能会发生这种情况。您需要进行身份验证吗?你最好使用
请求
软件包,它在这类事情上非常胜任。不客气,尤安!很高兴听到这个消息。也许您可以通过单击答案旁边的复选标记将答案标记为已接受?您可以推荐一个解释urllib.error的教程吗?我喜欢理解我的代码在做什么,而不是仅仅从StackOverflow上撕下来。我喜欢这种态度。
import urllib.error
从主模块“urllib”导入子模块“error”。在该模块中存在异常类HTTPError,我们需要它告诉Python,如果在try-except子句中发生HTTPError类型的异常,它应该在except子句之后执行代码。例如,你可以在许多地方读到更多关于尝试和例外的内容。再次祝杰斯珀有一个美好的夜晚(如果你所在的地方是晚上的话),那就是!晚上也祝你愉快,尤安!
import urllib.request, urllib.error

...

def down(i, inp):
    full_path = 'images/image-{}.jpg'.format(i)
    url = "https://www.sitename.com/{}{}.jpg".format(inp,i)
    try:
        urllib.request.urlretrieve(url, full_path)
        print("saved")
    except urllib.error.HTTPError as e:
        print("failed:", e)


    return None