如果找不到信息,请停止循环

时间:2017-11-21 09:14:54

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

我创建了一个打开多个网址的网页抓取程序,它会检查哪个网址包含与"明天" s日期相关的信息,然后打印该网址上的某些特定信息。我的问题是,有时该列表中的所有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

1 个答案:

答案 0 :(得分:2)

不需要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")