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