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