【问题标题】:Stop a loop if information is not found如果未找到信息,则停止循环
【发布时间】:2018-05-04 16:37:59
【问题描述】:

我创建了一个网页抓取程序,它可以打开多个 URL,它会检查哪个 URL 包含与“明天”日期相关的信息,然后打印该 URL 上的一些特定信息。我的问题是,有时该列表中的所有 URL 都没有关于“明天”的信息。所以我希望在这种情况下,程序会打印其他信息,如“未找到数据”。我怎么能做到这一点?我还有其他疑问,我是否需要一开始的while循环?谢谢。

我的代码是:

from datetime import datetime, timedelta

tomorrow = datetime.now() + timedelta(days=1)
tomorrow = tomorrow.strftime('%d-%m-%Y')

day = ""

while day != tomorrow:
    for url in list_urls:
        browser.get(url)
        time.sleep(1)
        dia_page = browser.find_element_by_xpath("//*[@id='item2']/b").text
        dia_page = dia_page[-10:]
        day_uns = datetime.strptime(dia_page, "%d-%m-%Y")
        day = day_uns.strftime('%d-%m-%Y')
        if day == tomorrow:
            meals = browser.find_elements_by_xpath("//*[@id='item2']/span")
            meal_reg = browser.find_element_by_xpath("//*[@id='item_frm']/span[1]").text
            sopa2 = (meals[0].text)
            refeicao2 = (meals[1].text)
            sobremesa2 = (meals[2].text)
            print(meal_reg)
            print(sopa2)
            print(refeicao2)
            print(sobremesa2)
            break

【问题讨论】:

    标签: python loops for-loop while-loop break


    【解决方案1】:

    不需要while 循环,您可以为此使用for-else Python 构造:

    for url in list_urls:
        # do stuff
        if day == tomorrow:
            # do and print stuff
            break
    else: # break never encountered
        print("no data found")
    

    【讨论】:

      猜你喜欢
      • 2021-12-28
      • 2016-11-27
      • 2017-05-10
      • 2021-09-28
      • 1970-01-01
      • 1970-01-01
      • 2016-03-18
      • 2020-09-28
      • 1970-01-01
      相关资源
      最近更新 更多