【问题标题】:Can I restart my python code using a try/except?我可以使用 try/except 重新启动我的 python 代码吗?
【发布时间】:2019-03-17 05:19:41
【问题描述】:

我有一个程序,我要去 reddit.com 网站并从中获取一个 html 元素。然而,大约有 1/10 的时间,旧的 reddit 网站出现了,我必须重新启动程序。有没有更短的方法来处理这个错误(基本上再次从顶部重新启动)?我似乎无法通过 try/except 弄清楚。

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']")

【问题讨论】:

  • 将所有内容封装在一个 while 循环中,仅在成功时中断。
  • if len(elem) == 0: -> if not elem:(在 Python 意义上更漂亮)

标签: python error-handling try-catch try-except


【解决方案1】:

就像@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()

【讨论】:

    【解决方案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']")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多