我可以使用try/except重新启动python代码吗?

2024-06-17 09:26:21 发布

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

我有一个节目要去reddit.com网站并从中获取html元素。然而,大约十分之一的时间,旧的reddit网站出现了,我不得不重新启动程序。有没有更简单的方法来处理这个错误(基本上从顶部重新启动)?我似乎一试就想不出来。你知道吗

browser = webdriver.Chrome(executable_path=r'C:\Users\jacka\Downloads\chromedriver_win32\chromedriver.exe')

browser.get("https://www.reddit.com/")

# grabs the html tag for the subreddit name
elem = browser.find_elements_by_css_selector("a[data-click-id='subreddit']")

#in the case that old reddit loads, it restarts the browser.
if len(elem) == 0:
    browser.close()

    browser = webdriver.Chrome(executable_path=r'C:\Users\jacka\Downloads\chromedriver_win32\chromedriver.exe')

    browser.get("https://www.reddit.com/")

    # grabs the html tag for the subreddit name
    elem = browser.find_elements_by_css_selector("a[data-click-id='subreddit']")

Tags: thepathbrowsercom网站htmlchromechromedriver
2条回答

通过@HSK解决。我把代码放在一个while循环中运行,直到得到正确版本的reddit。你知道吗

#had to initalize elem so the loop would run
elem = ""
while len(elem) == 0:
    browser = webdriver.Chrome(executable_path=r'C:\Users\jacka\Downloads\chromedriver_win32\chromedriver.exe')

    browser.get("https://www.reddit.com/")

    # grabs the html tag for the subreddit name
    elem = browser.find_elements_by_css_selector("a[data-click-id='subreddit']")

正如@HSK在评论中提到的,您可以使用无限while循环不断尝试,直到毫无例外地得到您想要的东西。请在离开前添加finally子句以关闭browser句柄。你知道吗

while True:
    browser = webdriver.Chrome(executable_path=r'C:\Users\jacka\Downloads\chromedriver_win32\chromedriver.exe')
    try:
        browser.get("https://www.reddit.com/")
        elem = browser.find_elements_by_css_selector("a[data-click-id='subreddit']")
        break
    except Exception:
        pass
    finally:
        browser.close()

相关问题 更多 >