Выполнен парсинг и добавлена логирование, без изменение логики
parent
c4a90cefc5
commit
10d8b07ccf
18
app/main.py
18
app/main.py
|
|
@ -3,7 +3,7 @@ import parse_saby
|
|||
from validation import DataValid
|
||||
import scheduler
|
||||
|
||||
print("Зпуск main.py")
|
||||
print("Запуск main.py")
|
||||
|
||||
def parse_data_in_list(dict_data: dict) -> list:
|
||||
"""
|
||||
|
|
@ -20,25 +20,13 @@ def parse_data_in_list(dict_data: dict) -> list:
|
|||
result.append([key_id, *value_data])
|
||||
return result
|
||||
|
||||
def validate_data(list_data: list[list]) -> list:
|
||||
"""
|
||||
Функция принимает список списков, выполняет парсинг и валидацию
|
||||
с пмошью класса DataValid из файла validation.py.
|
||||
Возвращает распршеный валидный список словарей для БД.
|
||||
"""
|
||||
result = []
|
||||
for intem_list in list_data:
|
||||
try:
|
||||
validated_data = DataValid.from_list(intem_list) # Передаем один лист
|
||||
result.append(validated_data.model_dump()) # Добаляем валидный и распаршеный словарь
|
||||
except: continue
|
||||
return result
|
||||
|
||||
print("1/5. Запуск парсинга сайта")
|
||||
result_dict_data = parse_saby.process_reports_parse()
|
||||
print('2/5. Предварительный парсинг')
|
||||
list_data = parse_data_in_list(result_dict_data)
|
||||
print("3/5. Запуск валидации")
|
||||
list_data_validated = validate_data(list_data)
|
||||
list_data_validated = DataValid.validate_data(list_data)
|
||||
print("4/5 Отправка данных в БД")
|
||||
working_database.SimpleDB().data_transfer_in_database(list_data_validated)
|
||||
print("5/5. Запуск планировщика")
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ from apscheduler.triggers.cron import CronTrigger
|
|||
import subprocess
|
||||
|
||||
def run_parser(filename = 'main.py'):
|
||||
print(f"Запуск {filename}...")
|
||||
subprocess.run(['python', filename])
|
||||
|
||||
def launch_the_scheduler(h=6, m=0):
|
||||
|
|
@ -10,7 +11,7 @@ def launch_the_scheduler(h=6, m=0):
|
|||
|
||||
# Каждый день в 6:00 утра запуск run_parser()
|
||||
scheduler.add_job(run_parser, trigger=CronTrigger(hour=h, minute=m))
|
||||
|
||||
print("Планировщик запущен. Нажмите Ctrl+C для остановки.")
|
||||
try:
|
||||
scheduler.start()
|
||||
except KeyboardInterrupt:
|
||||
|
|
|
|||
|
|
@ -37,3 +37,18 @@ class DataValid(BaseModel):
|
|||
return parser.parse(date)
|
||||
except(ValueError, TypeError): return date
|
||||
return date
|
||||
|
||||
@staticmethod
|
||||
def validate_data(list_data: list[list]) -> list:
|
||||
"""
|
||||
Функция принимает список списков, выполняет парсинг и валидацию
|
||||
с пмошью класса DataValid из файла validation.py.
|
||||
Возвращает распршеный валидный список словарей для БД.
|
||||
"""
|
||||
result = []
|
||||
for intem_list in list_data:
|
||||
try:
|
||||
validated_data = DataValid.from_list(intem_list) # Передаем один лист
|
||||
result.append(validated_data.model_dump()) # Добаляем валидный и распаршеный словарь
|
||||
except: continue
|
||||
return result
|
||||
Loading…
Reference in New Issue