This commit is contained in:
Andrey Sazonov 2025-10-02 21:33:46 +03:00
parent 7d9001a6a0
commit 3c7fd7ae68

22
main.py
View File

@ -7,7 +7,7 @@ from pathlib import Path
from urllib3.exceptions import InsecureRequestWarning from urllib3.exceptions import InsecureRequestWarning
import urllib3 import urllib3
urllib3.disable_warnings(InsecureRequestWarning) urllib3.disable_warnings()
logging.basicConfig( logging.basicConfig(
level=logging.INFO, level=logging.INFO,
@ -28,6 +28,14 @@ PLAN_FILE = Path("plan.txt")
VN_FILE = Path("vnereglament.txt") VN_FILE = Path("vnereglament.txt")
AVAR_FILE = Path("avar.txt") AVAR_FILE = Path("avar.txt")
HEADERS = {
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
"Accept": "application/json, text/plain, */*",
"Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
"Referer": "https://www.mrsk-1.ru/customers/customer-service/power-outage/",
"X-Requested-With": "XMLHttpRequest"
}
def clean_street(street: str) -> str: def clean_street(street: str) -> str:
street = street.replace('Белгород г; ', '').replace('\n\n', '\n').strip() street = street.replace('Белгород г; ', '').replace('\n\n', '\n').strip()
lines = [line.strip() for line in street.split('\n') if line.strip()] lines = [line.strip() for line in street.split('\n') if line.strip()]
@ -59,35 +67,41 @@ def parse_and_save(data, file_path: Path, mode: str):
def get_plan(): def get_plan():
try: try:
r = requests.get(url=URL_PLAN, verify=False, timeout=10) r = requests.get(url=URL_PLAN, headers=HEADERS, verify=False, timeout=15)
r.raise_for_status() r.raise_for_status()
data = r.json() data = r.json()
parse_and_save(data, PLAN_FILE, 'plan') parse_and_save(data, PLAN_FILE, 'plan')
logger.info("[Плановые отключения] обновлены") logger.info("[Плановые отключения] обновлены")
except Exception as e: except Exception as e:
logger.error(f"Ошибка при получении плановых отключений: {e}") logger.error(f"Ошибка при получении плановых отключений: {e}")
if 'r' in locals():
logger.error(f"Статус: {r.status_code}, Ответ: {r.text[:300]}")
PLAN_FILE.write_text("[Ошибка загрузки данных]", encoding='utf-8') PLAN_FILE.write_text("[Ошибка загрузки данных]", encoding='utf-8')
def get_vnereglament(): def get_vnereglament():
try: try:
r = requests.get(url=URL_VNEREGLAMENT, verify=False, timeout=10) r = requests.get(url=URL_VNEREGLAMENT, headers=HEADERS, verify=False, timeout=15)
r.raise_for_status() r.raise_for_status()
data = r.json() data = r.json()
parse_and_save(data, VN_FILE, 'vnereglament') parse_and_save(data, VN_FILE, 'vnereglament')
logger.info("[Внерегламентные отключения] обновлены") logger.info("[Внерегламентные отключения] обновлены")
except Exception as e: except Exception as e:
logger.error(f"Ошибка при получении внерегламентных отключений: {e}") logger.error(f"Ошибка при получении внерегламентных отключений: {e}")
if 'r' in locals():
logger.error(f"Статус: {r.status_code}, Ответ: {r.text[:300]}")
VN_FILE.write_text("[Ошибка загрузки данных]", encoding='utf-8') VN_FILE.write_text("[Ошибка загрузки данных]", encoding='utf-8')
def get_avar(): def get_avar():
try: try:
r = requests.get(url=URL_AVAR, verify=False, timeout=10) r = requests.get(url=URL_AVAR, headers=HEADERS, verify=False, timeout=15)
r.raise_for_status() r.raise_for_status()
data = r.json() data = r.json()
parse_and_save(data, AVAR_FILE, 'avar') parse_and_save(data, AVAR_FILE, 'avar')
logger.info("[Аварийные отключения] обновлены") logger.info("[Аварийные отключения] обновлены")
except Exception as e: except Exception as e:
logger.error(f"Ошибка при получении аварийных отключений: {e}") logger.error(f"Ошибка при получении аварийных отключений: {e}")
if 'r' in locals():
logger.error(f"Статус: {r.status_code}, Ответ: {r.text[:300]}")
AVAR_FILE.write_text("[Ошибка загрузки данных]", encoding='utf-8') AVAR_FILE.write_text("[Ошибка загрузки данных]", encoding='utf-8')
def start_parser(): def start_parser():