scraper / test_scraper.py
greeta's picture
Upload test_scraper.py
55cbb47 verified
"""
Тест для проверки работы скрапера
"""
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())