| # Исправления скрапера ФИПИ |
|
|
| ## Найденные проблемы |
|
|
| 1. **Неверные URL-адреса** - скрапер использовал несуществующие адреса: |
| - ❌ `/oge/demo/oge-russian` → 404 |
| - ❌ `/ege/demo/ege-russian` → 404 |
| - ✅ Исправлено на: `/ege/otkrytyy-bank-zadaniy-ege`, `/oge/otkrytyy-bank-zadaniy-oge` |
|
|
| 2. **SSL ошибки для поддоменов** - `ege.fipi.ru` и `oge.fipi.ru` требовали отключения проверки SSL |
|
|
| 3. **Парсинг заголовков** - заголовки не извлекались из-за неправильного селектора |
|
|
| ## Внесенные исправления |
|
|
| ### 1. Обновлены URL-адреса в `scrape_tasks()` |
| ```python |
| urls_to_scrape = [ |
| "https://fipi.ru/ege/otkrytyy-bank-zadaniy-ege", |
| "https://fipi.ru/oge/otkrytyy-bank-zadaniy-oge", |
| ] |
| ``` |
| |
| ### 2. Отключена проверка SSL в `fetch_page()` |
| ```python |
| ssl_context = ssl.create_default_context() |
| ssl_context.check_hostname = False |
| ssl_context.verify_mode = ssl.CERT_NONE |
| ``` |
|
|
| ### 3. Улучшен парсинг в `parse_task_page()` |
| - Добавлен селектор `.content h1` для заголовков |
| - Добавлено извлечение из `<title>` если h1 пустой |
| - Добавлено извлечение ссылок на задания |
| - Очистка от скриптов, стилей, nav, header, footer |
|
|
| ### 4. Добавлено скачивание вложенных заданий |
| Теперь скрапер переходит по найденным ссылкам и скачивает дополнительные задания. |
|
|
| ## Результат |
|
|
| | До исправления | После исправления | |
| |----------------|-------------------| |
| | 0 заданий | 12 заданий | |
| | 404 ошибки | 200 OK | |
| | "Без названия" | Правильные заголовки | |
|
|
| ## Запуск теста |
|
|
| ```bash |
| cd ai-scraper |
| python test_scraper.py |
| ``` |
|
|
| ## Использование |
|
|
| ```python |
| from scraper import FIPIScraper |
| import asyncio |
| |
| async def main(): |
| scraper = FIPIScraper() |
| tasks = await scraper.scrape_tasks(subject="russian") |
| print(f"Найдено заданий: {len(tasks)}") |
| for task in tasks: |
| print(f"- {task['title']}: {task['source_url']}") |
| |
| asyncio.run(main()) |
| ``` |
|
|