| """ |
| Тест для проверки работы скрапера |
| """ |
|
|
| 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) |
| |
| |
| print("\n1. Проверка главной страницы...") |
| html = await scraper.fetch_page("https://fipi.ru") |
| if html: |
| print(f" ✅ Главная страница получена (длина: {len(html)} символов)") |
| else: |
| print(" ❌ Не удалось получить главную страницу") |
| return |
| |
| |
| 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(" ❌ Не удалось распарсить страницу") |
| |
| |
| 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(" ❌ Не удалось получить страницу ЕГЭ") |
| |
| |
| 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(" ❌ Не удалось получить страницу банка заданий ЕГЭ") |
| |
| |
| 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()) |
|
|