54 lines
2.2 KiB
Python
54 lines
2.2 KiB
Python
from playwright.sync_api import sync_playwright
|
|
import time
|
|
import json
|
|
|
|
print("🚀 Запускаем Headless-агента для создания карты личного кабинета...")
|
|
|
|
with sync_playwright() as p:
|
|
# Запускаем уже в фоновом (headless) режиме, так как куки сохранены!
|
|
browser = p.chromium.launch_persistent_context(
|
|
user_data_dir="/app/browser_context",
|
|
headless=True,
|
|
args=[
|
|
'--no-sandbox',
|
|
'--disable-setuid-sandbox',
|
|
'--disable-dev-shm-usage',
|
|
'--disable-gpu',
|
|
'--window-size=1280,1024'
|
|
]
|
|
)
|
|
|
|
page = browser.pages[0]
|
|
|
|
print("🌐 Переходим на главную страницу ЛК (dom.gosuslugi.ru)...")
|
|
page.goto("https://dom.gosuslugi.ru/#!/main")
|
|
|
|
# Ждем 5 секунд, чтобы все скрипты и данные кабинета прогрузились
|
|
page.wait_for_timeout(5000)
|
|
|
|
print("📸 Делаем полноразмерный скриншот кабинета...")
|
|
page.screenshot(path="/app/cabinet_home_map.png", full_page=True)
|
|
|
|
print("🗺️ Составляем карту ссылок (парсим меню)...")
|
|
# Выполняем JS прямо на странице, чтобы вытащить структуру
|
|
links = page.evaluate('''() => {
|
|
let menu_links = [];
|
|
// Собираем все осмысленные ссылки
|
|
document.querySelectorAll('a').forEach(a => {
|
|
let text = a.innerText.trim();
|
|
if (a.href && text.length > 0 && a.href.includes('dom.gosuslugi.ru')) {
|
|
menu_links.push({text: text, href: a.href});
|
|
}
|
|
});
|
|
return menu_links;
|
|
}''')
|
|
|
|
# Сохраняем карту ссылок в JSON
|
|
with open("/app/cabinet_links_map.json", "w", encoding="utf-8") as f:
|
|
json.dump(links, f, ensure_ascii=False, indent=2)
|
|
|
|
print(f"✅ Готово! Найдено уникальных ссылок: {len(links)}")
|
|
print("💾 Скриншот: cabinet_home_map.png")
|
|
print("💾 Карта: cabinet_links_map.json")
|
|
|
|
browser.close()
|