""" Тест для проверки работы скрапера """ import asyncio import sys from bs4 import BeautifulSoup from scraper import FIPIScraper async def test_scraper(): """Тестирование скрапера""" scraper = FIPIScraper(base_url="https://fipi.ru") print("=" * 50) print("Тестирование скрапера ФИПИ") print("=" * 50) # Тест 1: Проверка главной страницы print("\n1. Проверка главной страницы...") html = await scraper.fetch_page("https://fipi.ru") if html: print(f" ✅ Главная страница получена (длина: {len(html)} символов)") else: print(" ❌ Не удалось получить главную страницу") return # Тест 2: Парсинг главной страницы print("\n2. Парсинг главной страницы...") task = scraper.parse_task_page(html, "https://fipi.ru") if task: print(f" ✅ Заголовок: {task['title'][:100] if task['title'] else 'N/A'}") print(f" ✅ Тип задания: {task['task_type']}") else: print(" ❌ Не удалось распарсить страницу") # Тест 3: Проверка страницы с ЕГЭ print("\n3. Проверка страницы ЕГЭ...") html = await scraper.fetch_page("https://fipi.ru/ege") if html: print(f" ✅ Страница ЕГЭ получена (длина: {len(html)} символов)") task = scraper.parse_task_page(html, "https://fipi.ru/ege") if task: print(f" ✅ Заголовок: {task['title'][:100] if task['title'] else 'N/A'}") else: print(" ❌ Не удалось получить страницу ЕГЭ") # Тест 4: Проверка банка заданий ЕГЭ print("\n4. Проверка банка заданий ЕГЭ...") html = await scraper.fetch_page("https://fipi.ru/ege/otkrytyy-bank-zadaniy-ege") if html: print(f" ✅ Страница банка заданий ЕГЭ получена (длина: {len(html)} символов)") # Пробуем найти ссылки на задания soup = BeautifulSoup(html, 'lxml') links = [a['href'] for a in soup.find_all('a', href=True) if '/ege/' in a['href']] print(f" ✅ Найдено ссылок в банке заданий: {len(links)}") if links: print(f" 📋 Примеры ссылок: {links[:5]}") else: print(" ❌ Не удалось получить страницу банка заданий ЕГЭ") # Тест 5: Скрапинг заданий по предмету print("\n5. Скрапинг заданий по русскому языку...") tasks = await scraper.scrape_tasks(subject="russian") print(f" {'✅' if tasks else '⚠️'} Найдено заданий: {len(tasks)}") for i, task in enumerate(tasks[:3], 1): print(f" {i}. {task.get('title', 'Без названия')[:80]}") print("\n" + "=" * 50) print("Тестирование завершено") print("=" * 50) if __name__ == "__main__": asyncio.run(test_scraper())