2017-05-12 74 views
0

即时通讯连接到一个网站与python请求,并正常工作。Python - 继续不工作for循环?

我的问题是,我有一个代理使用的代理列表,如果其中一个代理ip正在返回一个404错误,我然后需要我的for循环去循环的顶部,并继续,直到我得到一个响应为200.

当我的循环遇到异常/ 400-503错误时,它会返回到代码的顶部,但是只是出现循环,并继续执行代码。

快速注意:代理数组有6个IP,并且循环dosent得到他们全部。

什么是错,即时使用下面的代码,继续?

for l in list: 
    for a in otherlist: 
     for proxy in randomProxy: 
      print 'Using Proxy: ', proxy 
      try: 
       r = requests.get(url, timeout=20, headers=headers, proxies=proxy) 
       if r.status_code == 200: 
        response = r 
        print 'Good Proxy: ', proxy 
        pass 
       else: 
        print 'Bad Proxy: ', proxy 
        continue 
      except requests.exceptions.RequestException as e: 
       # A serious problem happened, like an SSLError or InvalidURL 
       print "Error: {}".format(e) 
       continue 

我真的不明白为什么会发生这种情况,也许我错了怎么继续工作?

回答

1

这可能工作

for proxy in randomProxy: 
    print 'Using Proxy: ', proxy 
    try: 
     r = requests.get(url, timeout=20, headers=headers, proxies=proxy) 
     if r.status_code == 200: 
      response = r 
      print 'Good Proxy: ', proxy 
      break 
     else: 
      print('Bad Proxy:', proxy) 
      print('Proxy is not working!') 
      continue 
    except: 
     print('Bad Proxy:', proxy) 
     print('Proxy is not working!') 
+0

对不起@Amey我对计算器错误压痕。 for循环完美,但如果它遇到异常或http错误,那么我希望它继续下一个在列表中的IP。但它不会,你有什么好主意? – Dannie