Могу ли я перезапустить свой код Python, используя try / кроме? - PullRequest
0 голосов
/ 12 октября 2018

У меня есть программа, в которую я захожу на сайт reddit.com и извлекаю из нее html-элемент.однако примерно в 1/10 времени старый веб-сайт 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']")

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Как @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()
0 голосов
/ 12 октября 2018

Решено благодаря @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']")
...