add some error catch

This commit is contained in:
Dmitry Afanasyev 2022-08-14 21:57:45 +03:00
parent 1991d0d640
commit ba76108c28
3 changed files with 16 additions and 7 deletions

1
.gitignore vendored
View File

@ -144,3 +144,4 @@ cython_debug/
# my staff # my staff
delete/ delete/
geckodriver

View File

@ -6,7 +6,7 @@ from pathlib import Path
import wget import wget
from core.logger import logger from core.logger import logger
from selenium import webdriver from selenium import webdriver
from selenium.common.exceptions import NoSuchElementException from selenium.common.exceptions import NoSuchElementException, WebDriverException
from selenium.webdriver.firefox import options from selenium.webdriver.firefox import options
from selenium.webdriver.firefox.service import Service from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.webdriver import WebDriver from selenium.webdriver.firefox.webdriver import WebDriver
@ -31,7 +31,7 @@ def download_gecko_driver() -> None:
logger.info(f'\ngeckodriver has been downloaded to folder {BASE_DIR}') logger.info(f'\ngeckodriver has been downloaded to folder {BASE_DIR}')
def configure_firefox_driver(private_window: bool = False) -> WebDriver: def configure_firefox_driver(private_window: bool = False) -> WebDriver | None:
opt = options.Options() opt = options.Options()
opt.headless = True opt.headless = True
opt.add_argument('-profile') opt.add_argument('-profile')
@ -39,12 +39,18 @@ def configure_firefox_driver(private_window: bool = False) -> WebDriver:
if private_window: if private_window:
opt.set_preference("browser.privatebrowsing.autostart", True) opt.set_preference("browser.privatebrowsing.autostart", True)
service = Service(executable_path=BASE_DIR / 'geckodriver') service = Service(executable_path=BASE_DIR / 'geckodriver')
firefox_driver = webdriver.Firefox(service=service, options=opt) try:
firefox_driver = webdriver.Firefox(service=service, options=opt)
return firefox_driver return firefox_driver
except WebDriverException:
logger.error('Error configuring webdriver. Possible it already configured')
return None
def parse_site(driver: WebDriver, url: str, message: str) -> str: def parse_site(url: str, message: str, driver: WebDriver | None = None) -> str:
if not driver:
logger.error('Driver is not configured')
return 'Что-то пошло не так. :( Драйвер Firefox не сконфигурирован.'
driver.get(url) driver.get(url)
time.sleep(4) time.sleep(4)
elements = driver.find_elements( elements = driver.find_elements(

View File

@ -1,6 +1,6 @@
from aiogram import Dispatcher from aiogram import Dispatcher
from aiogram.utils.executor import start_polling, start_webhook from aiogram.utils.executor import start_polling, start_webhook
from core.bot import bot, dispatcher from core.bot import bot, dispatcher, driver
from core.logger import logger from core.logger import logger
from core.scheduler import asyncio_schedule from core.scheduler import asyncio_schedule
from settings import ( from settings import (
@ -24,6 +24,8 @@ async def on_shutdown(dp: Dispatcher) -> None:
await bot.delete_webhook() await bot.delete_webhook()
# Close DB connection (if used) # Close DB connection (if used)
if driver:
driver.close()
await dispatcher.storage.close() await dispatcher.storage.close()
await dispatcher.storage.wait_closed() await dispatcher.storage.wait_closed()