File size: 3,397 Bytes
55cbb47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""
Тест для проверки работы скрапера
"""

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())