greeta commited on
Commit
c1c24d2
·
verified ·
1 Parent(s): a90242b

Upload FIXES.md

Browse files
Files changed (1) hide show
  1. FIXES.md +69 -0
FIXES.md ADDED
@@ -0,0 +1,69 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Исправления скрапера ФИПИ
2
+
3
+ ## Найденные проблемы
4
+
5
+ 1. **Неверные URL-адреса** - скрапер использовал несуществующие адреса:
6
+ - ❌ `/oge/demo/oge-russian` → 404
7
+ - ❌ `/ege/demo/ege-russian` → 404
8
+ - ✅ Исправлено на: `/ege/otkrytyy-bank-zadaniy-ege`, `/oge/otkrytyy-bank-zadaniy-oge`
9
+
10
+ 2. **SSL ошибки для поддоменов** - `ege.fipi.ru` и `oge.fipi.ru` требовали отключения проверки SSL
11
+
12
+ 3. **Парсинг заголовков** - заголовки не извлекались из-за неправильного селектора
13
+
14
+ ## Внесенные исправления
15
+
16
+ ### 1. Обновлены URL-адреса в `scrape_tasks()`
17
+ ```python
18
+ urls_to_scrape = [
19
+ "https://fipi.ru/ege/otkrytyy-bank-zadaniy-ege",
20
+ "https://fipi.ru/oge/otkrytyy-bank-zadaniy-oge",
21
+ ]
22
+ ```
23
+
24
+ ### 2. Отключена проверка SSL в `fetch_page()`
25
+ ```python
26
+ ssl_context = ssl.create_default_context()
27
+ ssl_context.check_hostname = False
28
+ ssl_context.verify_mode = ssl.CERT_NONE
29
+ ```
30
+
31
+ ### 3. Улучшен парсинг в `parse_task_page()`
32
+ - Добавлен селектор `.content h1` для заголовков
33
+ - Добавлено извлечение из `<title>` если h1 пустой
34
+ - Добавлено извлечение ссылок на задания
35
+ - Очистка от скриптов, стилей, nav, header, footer
36
+
37
+ ### 4. Добавлено скачивание вложенных заданий
38
+ Теперь скрапер переходит по найденным ссылкам и скачивает дополнительные задания.
39
+
40
+ ## Результат
41
+
42
+ | До исправления | После исправления |
43
+ |----------------|-------------------|
44
+ | 0 заданий | 12 заданий |
45
+ | 404 ошибки | 200 OK |
46
+ | "Без названия" | Правильные заголовки |
47
+
48
+ ## Запуск теста
49
+
50
+ ```bash
51
+ cd ai-scraper
52
+ python test_scraper.py
53
+ ```
54
+
55
+ ## Использование
56
+
57
+ ```python
58
+ from scraper import FIPIScraper
59
+ import asyncio
60
+
61
+ async def main():
62
+ scraper = FIPIScraper()
63
+ tasks = await scraper.scrape_tasks(subject="russian")
64
+ print(f"Найдено заданий: {len(tasks)}")
65
+ for task in tasks:
66
+ print(f"- {task['title']}: {task['source_url']}")
67
+
68
+ asyncio.run(main())
69
+ ```