if的条件没满足,想要重试几次,这种逻辑怎么操作?

比如设置了一个判断条件:

if requests.get(so_url,proxies=proxy,headers=headers).status_code == 200:
    html = requests.get(so_url,proxies=proxy,headers=headers).text
    url = re.search('<div class="img-box">.*?<a.*?href="(.*?)"><span>',html,re.S).group(1).replace('amp;','')
    print(url)
else:
    proxy = str(proxy).replace("{'http': 'http://",'').replace("'}",'')
    #当条件不满足时,想要重试请求几次

请问这种逻辑该怎么设计?
一开始在else下直接调用了该函数,可是后来好像有内存溢出的情况?
后来干脆把上面的判断在else下又写了一遍,可是也只能重试一次...

想要的效果是,如果走到else了,那就把判断条件再重试N次...

阅读 3.5k
3 个回答
count = 0
MAX_TRY=9
while (count < MAX_TRY):
   print 'The count is:', count
   if requests.get(so_url,proxies=proxy,headers=headers).status_code == 200:
        html = requests.get(so_url,proxies=proxy,headers=headers).text
        url = re.search('<div class="img-box">.*?<a.*?href="(.*?)"><span>',html,re.S).group(1).replace('amp;','')
        print(url)
        break
   else:
        proxy = str(proxy).replace("{'http': 'http://",'').replace("'}",'')
        #当条件不满足时,想要重试请求几次
        count = count + 1
   

递归呗,你需要一个变量来记录请求次数

Session()对象

python3

import requests as req

ssn = req.Session()
ssn.headers=headers

n=9
for i in range(n):
    ssn.proxies = proxy
    rsp = ssn.get(url)
    if rsp.status_code == 200:
        html=rsp.text
        print(url)
        break
    else:
        proxy = str(proxy).replace("{'http': 'http://",'').replace("'}",'')

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题