Выполнен парсинг и добавлена логирование, без изменение логики

main
Лев 2025-09-03 17:19:03 +05:00
parent c4a90cefc5
commit 10d8b07ccf
3 changed files with 21 additions and 17 deletions

View File

@ -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. Запуск планировщика")

View File

@ -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:

View File

@ -36,4 +36,19 @@ class DataValid(BaseModel):
try:
return parser.parse(date)
except(ValueError, TypeError): return date
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