【问题标题】:list of URLs, try URL request 3 times, if condition, move to next URLURL 列表,尝试 URL 请求 3 次,如果条件,移动到下一个 URL
【发布时间】:2023-03-25 11:50:02
【问题描述】:

我有一个可供抓取的 URL 列表。如果状态码不是 200,我想再试 2 次。如果状态码 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 作为循环,并引发异常

【问题讨论】:

    标签: web-scraping python-requests httpresponse


    【解决方案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_again > 3 时,此方法有效。否则,它会连续循环。谢谢你很好的解决方案。
    • 是的,我在测试时意识到了这一点。我把它固定在上面。本质上说如果它有效,请将您的尝试再次设置为 0,这样它就不会连续循环。不过有很多合乎逻辑的方法。
    • 打印语句的重要补充谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多