Python:使用if和else语句循环

时间:2017-10-28 10:53:44

标签: python

如果响应是' CAPCHA_NOT_READY'我写了一个请求URL的脚本。然后脚本应该休眠5秒钟,然后再次请求URL。如果响应以' OK'开头。那么脚本应该继续。

我不确定如何设置此循环。谢谢,皮尔斯。

r = requests.get(url)
print("Sending Captcha To 2captcha")
print("Captcha ID = "+(r.text))

time.sleep(5)

url2 = "http://2captcha.com/res.php?key="+api+"action=get&id="+(r.text)[3:]
print(url2)
r = requests.get(url2)
print(r.text)

if r.text == "CAPCHA_NOT_READY":
    time.sleep(5)
    r = requests.get(url2)
    print(r.text) 

2 个答案:

答案 0 :(得分:0)

到目前为止,据我所知,您希望从url获取验证码并将其发送到url2并在每5秒内请求url2直到成功。

r = requests.get(url)
print("Sending Captcha To 2captcha")
print("Captcha ID = "+(r.text))
CAPTCHA_ID = r.text
time.sleep(5)

CAPTCHA_TEXT = True
while CAPTCHA_TEXT:
    url2 = "http://2captcha.com/res.php?key="+api+"action=get&id="+(CAPTCHA_ID)[3:]
    r = requests.get(url2)
    if r.text == 'CAPCHA_NOT_READY':
        time.sleep(5)
    if r.text == 'OK':
        CAPTCHA_TEXT = False

答案 1 :(得分:0)

这将是我的方法:

r = requests.get(url)

url = ("http://2captcha.com/res.php?"
       "key={api_key}&action=get&id={req_id}"
       .format(
           api_key=api,
           req_id=r.text[3:],
       ))

is_capcha_ready = False

while not is_capcha_ready:

    if requests.get(url).text == "CAPCHA_NOT_READY":
        time.sleep(5)
    else:
        is_capcha_ready = True

如果请求来自请求库,您还可以将查询字符串作为data关键字参数传递。

http://docs.python-requests.org/en/master/user/quickstart/#passing-parameters-in-urls