#python #beautifulsoup #data-extraction #try-except
Вопрос:
Я работаю над проектом очистки данных. Я использую приведенную ниже попытку и блок кода, кроме как для загрузки URL-адреса.
try:
driver.set_page_load_timeout(30)
driver.get(url)
except TimeoutException:
print("Page Loading Failed......")
print("Trying by Refreshing...")
for number_of_try in range(1,9):
print("Number of try ",number_of_try)
try:
driver.refresh()
break
except TimeoutException:
print("Fail")
print("trying after 1 miunutes")
time.sleep(60)
Проблема здесь в том, что код не будет блокироваться, кроме как при получении исключения TimeoutException. Я не понимаю, почему это происходит.
Вот моя ошибка исключения:
Исключение TimeoutException: тайм-аут: Истекло время приема сообщения от визуализатора: 30.000
Комментарии:
1. Вы хотите попробовать загрузить страницу 8 раз, и если это не удастся, возникнет исключение, верно?
2. @VictorErmakov Нет, я хочу загрузить страницу только один раз. Но если у меня есть исключение тайм-аута, я хочу перейти к другой части, а затем снова проверю загрузку страницы
Ответ №1:
Лучший способ сделать это — рекурсия.
from selenium.common.exceptions import TimeoutException
import time
TRY_LIMIT = 10
SLEEP_TIMER = 60
def get_url(driver, url, try_number=1):
if try_number > TRY_LIMIT:
return None # or you can raise other exception
try:
driver.get(url)
except TimeoutException:
time.sleep(SLEEP_TIMER)
get_url(driver, url, try_number 1)
и используйте его вот так
get_url(driver,url)