Python脚本代码重新检查一个部分

时间:2017-07-11 18:06:14

标签: python

我有一个脚本从网站上提取一些文字,我想知道如果结果不是我想要的话如何重新检查网站,然后当它返回我想要的或最多3次尝试时,然后继续脚本的其余部分?

例如 - 原始脚本;

Foo -> Bar

......其余的剧本......

正如您所看到的,上面的脚本从网站中提取了一段文本,那么如果'textIwant'不是我想要的,我该如何循环回'data1'?

所以最终脚本会做类似下面的事情,但我不确定正确的'if'语句;

url1 = "xxx.autotrader.com"

data1 = requests.get(url1)

searchKey = 'Toyota'
searchEndKey = '='

textIwant = data1.text[data1.text.find(searchKey)+len(searchKey):data1.text.find(searchEndKey,data1.text.find(searchKey)+len(searchKey)+1)]

......其余的剧本......

谢谢

1 个答案:

答案 0 :(得分:0)

我建议看一下图书馆"重试",它提供了漂亮的装饰师来做你想做的事:https://pypi.python.org/pypi/retrying

您所要做的就是在函数中包装要重试的代码,并在函数上添加@retry装饰器。

或者,您也可以执行以下操作:

import requests 
import time

def check_website():
    url1 = "xxx.autotrader.com"
    data1 = requests.get(url1)
    searchKey = 'Toyota'
    searchEndKey = '='

    checked_times = 0
    textIwant = data1.text[data1.text.find(searchKey)+len(searchKey):data1.text.find(searchEndKey,data1.text.find(searchKey)+len(searchKey)+1)]
    checked_times += 1

    while(checked_times < 3 and textIwant != 12345):
        data1 = requests.get(url1)
        textIwant = data1.text[data1.text.find(searchKey)+len(searchKey):data1.text.find(searchEndKey,data1.text.find(searchKey)+len(searchKey)+1)]
        checked_times +=1
        time.sleep(5)

    return (textIwant == 12345)


has_found = check_website()

if(has_found):
    # Do stuff ...
    pass

正如@coldspeed所提到的,我建议在每次尝试之前稍等一下,因为网站每次尝试之间都不会更新。上面的代码在每次尝试之间等待5秒钟。