我正在编写一个简单的脚本,通过房地产列表并收集代理个人网站。当我遇到一个代理没有网站的列表时,我遇到了一个问题。在这种情况下,脚本停止工作。现在我已经尝试了 - 除了在运行except块之前有效,当发生这种情况时整个浏览器关闭。
time.sleep(15)
for i in range(1,9):
listing_page = driver.find_element_by_xpath('//*[@id="m_property_lst_cnt_realtor_more_'+str(i)+'"]').click()
try:
realtor_url = driver.find_element_by_xpath('//*[@id="lblMediaLinks"]/a').click()
WebDriverWait(driver, 10).until(lambda d: len(driver.window_handles) == 2)
driver.switch_to_window(driver.window_handles[1])
WebDriverWait(driver, 10)
except:
print("Not found")
continue
driver.close()
driver.switch_to_window(driver.window_handles[0])
driver.get(home_page)
time.sleep(10)
无论如何我可以恢复到主页并在运行except块时再次启动循环?然后,如果不是;循环像往常一样运行?
答案 0 :(得分:0)
在我看来,将异常用作逻辑流程并不是一种好的做法。例外情况应该是特殊的......它们应该表明发生意外错误的时间。
相反,使用find_elements_*
(复数)并检查返回的集合是否为空。如果它不为空,则表示链接存在,单击它等。如果集合为空,则返回到主页并开始下一个循环。
for i in range(1,9):
listing_page = driver.find_element_by_xpath('//*[@id="m_property_lst_cnt_realtor_more_'+str(i)+'"]').click()
realtor_url = driver.find_elements_by_xpath('//*[@id="lblMediaLinks"]/a')
if (len(realtor_url)) > 0
realtor_url[0].click
WebDriverWait(driver, 10).until(lambda d: len(driver.window_handles) == 2)
driver.switch_to_window(driver.window_handles[1])
driver.close()
driver.switch_to_window(driver.window_handles[0])
driver.get(home_page)
BTW,.click()
仍然没有返回任何内容,因此将其返回值赋给变量将永远不会返回除null
以外的任何内容,因此我删除了该部分。