Python:当错误发生和消失时打印

2024-06-02 08:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网页抓取脚本,每分钟检查四个网站一次,如果有任何给定的关键字出现,就发布到twitter上。如果发生ConnectionError,它将休眠一分钟,然后重试。我想它打印“没有互联网连接”的第一次出现的错误,但不是第二次如果错误仍然存在,当它再试一分钟后。我也希望它打印“互联网连接建立”的第一次没有得到一个ConnectionError后,以前有连接错误。在这里我也希望它只打印一次。我该如何编写代码?到目前为止我有:

def checksite():
    try:
        *extensive irrelevant code for web scraping and posting*

    except requests.exceptions.ConnectionError as e:
        print("No internet connection")

while True:
    checksite()
    sleep(60)

但是,每次无法连接到internet时,都会打印此文件

感谢您的帮助


Tags: 代码脚本网页网站def错误互联网twitter
2条回答

试试这个:

NoInternet = 0
def checksite():
    try:
        *extensive irrelevant code for web scraping and posting*
        if NoInternet == 1:
           print("Internet connection established")
           NoInternet = 0

    except requests.exceptions.ConnectionError as e:
        if NoInternet == 0:
             print("No internet connection")
             NoInternet += 1 

while True:
    checksite()
    sleep(60)

但你得检查一下标签

一个简单的解决方案可能是这样的,其中checksite返回internet连接的状态,而不是打印(将打印逻辑留给循环):

def checksite():
    try:
        # *extensive irrelevant code for web scraping and posting*
        return True

    except requests.exceptions.ConnectionError as e:
        return False

was_connected = False
while True:
    connected = checksite()
    if connected and not was_connected:
        print("Internet connection established")
    elif not connected and was_connected:
        print("No internet connection")
    was_connected = connected
    sleep(60)

相关问题 更多 >