Web scraping URL列表,尝试URL请求3次,如果条件允许,移动到下一个URL
我有一个URL列表,可用于抓取。如果状态代码不是200,我想再试两次。如果状态代码在3次中不是200,我希望它移动到列表中的下一个URL 例如,这就是我所想的代码 url_list=[url1、url2、url3、url4、url5]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
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,这样它就不会连续循环。不过,有很多合乎逻辑的方法可以做到这一点。很好地补充了打印语句,谢谢