Web scraping URL列表,尝试URL请求3次,如果条件允许,移动到下一个URL

Web scraping URL列表,尝试URL请求3次,如果条件允许,移动到下一个URL,web-scraping,python-requests,httpresponse,Web Scraping,Python Requests,Httpresponse,我有一个URL列表,可用于抓取。如果状态代码不是200,我想再试两次。如果状态代码在3次中不是200,我希望它移动到列表中的下一个URL 例如,这就是我所想的代码 url_list=[url1、url2、url3、url4、url5] for url in url_list: requests.get(url) if requests.status_code == 200: do scraping if requests.status_code != 20

我有一个URL列表,可用于抓取。如果状态代码不是200,我想再试两次。如果状态代码在3次中不是200,我希望它移动到列表中的下一个URL

例如,这就是我所想的代码

url_list=[url1、url2、url3、url4、url5]

for url in url_list:
    requests.get(url)
    if requests.status_code == 200:
       do scraping

    if requests.status_code != 200:
       try url again 2 more times then move on to next url in list

我已经尝试过定义一个函数、范围、添加I=0,然后I=+1作为循环,并引发异常可能有更好的方法,但基本上就是放弃您的想法,执行以下操作:

for url in url_list:
    try_again = 3
    while try_again != 0:
        response = requests.get(url)
        if response.status_code == 200:
            print('do scraping')
            try_again = 0

        if response.status_code != 200:
            try_again -= 1
            print ('Request failed. Attempts remaining: %s' %try_again)
            if try_again == 0:
                print ('Tried 3 times. Moving to next URL.')

当您在if==200中定义try_>3时,这种方法就起作用了。否则,它会不断循环。谢谢你,这是一个很好的解决方案。是的,当我测试它时,我意识到了这一点。我在上面把它修好了。本质上就是说,如果成功,请将重试设置为0,这样它就不会连续循环。不过,有很多合乎逻辑的方法可以做到这一点。很好地补充了打印语句,谢谢