You've already forked parser_1cmycloud
mirror of
https://github.com/vanyagoncharov/parser_1cmycloud.git
synced 2026-06-19 17:18:10 +02:00
165 lines
6.9 KiB
Markdown
165 lines
6.9 KiB
Markdown
# Парсеры документации 1С:Предприятие.Элемент
|
|
|
|
Публикация на Infostart: [Парсеры документации 1С:Предприятие.Элемент](https://infostart.ru/1c/articles/2574543/)
|
|
|
|

|
|
|
|
Два парсера для сбора документации с сайта 1cmycloud.com:
|
|
- `parser.py` - для парсинга "Руководства разработчика" (иерархическое меню)
|
|
- `parser stdlib.py` - для парсинга "Стандартной библиотеки" (плоская структура)
|
|
|
|
## 📋 Требования
|
|
|
|
### Установка зависимостей
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### Необходимые компоненты
|
|
|
|
- Python 3.7+
|
|
- Google Chrome (для Selenium)
|
|
- Интернет-соединение
|
|
|
|
## 🚀 Быстрый старт
|
|
|
|
### 1. Парсинг Руководства разработчика (`parser.py`)
|
|
|
|
Парсит иерархическую структуру документации с раскрывающимися категориями:
|
|
|
|
```bash
|
|
python parser.py --url https://1cmycloud.com/console/help/element/8.1/docs/topics/1c-element-overview/ --username username --password password --use-selenium --visible-browser --save-by-pages --max-pages 10000 --pages-dir ManualDevelop
|
|
```
|
|
|
|
**⚠️ ВАЖНО:** После запуска:
|
|
1. Откроется окно браузера Chrome
|
|
2. Скрипт автоматически заполнит логин и пароль
|
|
3. **ВРУЧНУЮ** нажмите кнопку "Войти" в браузере
|
|
4. Дождитесь загрузки страницы документации
|
|
5. Парсер автоматически начнет работу
|
|
|
|
**Особенности:**
|
|
- Выполняет depth-first обход по меню
|
|
- Раскрывает категории по клику
|
|
- Пропускает разделы: "Устройство сервера" и "Панель управления сервера"
|
|
- Сохраняет каждую страницу в отдельную папку
|
|
|
|
### 2. Парсинг Стандартной библиотеки (`parser stdlib.py`)
|
|
|
|
Парсит плоскую структуру ссылок из меню:
|
|
|
|
```bash
|
|
python "parser stdlib.py" --url https://1cmycloud.com/console/help/element/8.1/docs/stdlib/element/ --username username --password password --use-selenium --visible-browser --save-by-pages --max-pages 10000 --pages-dir StdLib
|
|
```
|
|
|
|
**⚠️ ВАЖНО:** Также требует ручного нажатия кнопки "Войти" после заполнения формы!
|
|
|
|
**Особенности:**
|
|
- Собирает ВСЕ ссылки из меню (рекурсивно)
|
|
- Обходит страницы по порядку
|
|
- Подходит для плоской структуры документации
|
|
|
|
## 📂 Структура выходных данных
|
|
|
|
После парсинга создается:
|
|
|
|
```
|
|
<pages-dir>/
|
|
├── page_001_Название_страницы/
|
|
│ ├── page.html # Исходный HTML
|
|
│ └── content.md # Извлеченный контент в Markdown
|
|
├── page_002_Другая_страница/
|
|
│ ├── page.html
|
|
│ └── content.md
|
|
└── ...
|
|
|
|
documentation.json # JSON с метаданными всех страниц
|
|
documentation.txt # Весь текст в одном файле
|
|
```
|
|
|
|
## ⚙️ Параметры командной строки
|
|
|
|
### Общие параметры (для обоих парсеров)
|
|
|
|
| Параметр | Описание | По умолчанию |
|
|
|----------|----------|--------------|
|
|
| `--url` | URL начальной страницы | см. примеры выше |
|
|
| `--username` | Логин для авторизации | - |
|
|
| `--password` | Пароль для авторизации | - |
|
|
| `--use-selenium` | Использовать Selenium (обязательно!) | false |
|
|
| `--visible-browser` | Показывать окно браузера | false |
|
|
| `--save-by-pages` | Сохранять страницы по папкам | false |
|
|
| `--max-pages` | Максимум страниц для парсинга | 1000 |
|
|
| `--pages-dir` | Директория для сохранения | `pages` |
|
|
| `--output` | Имя текстового файла | `documentation.txt` |
|
|
| `--debug` | Режим отладки (сохранение HTML) | false |
|
|
|
|
## 🛠️ Вспомогательные скрипты
|
|
|
|
### 1. Удаление номеров страниц из имен папок
|
|
|
|
```bash
|
|
python remove_page_numbers.py <директория>
|
|
```
|
|
|
|
Убирает:
|
|
- Префикс `page_XXX_` из имен папок
|
|
- Суффикс ` _ 1С_Предприятие.Элемент`
|
|
|
|
**Пример:**
|
|
```bash
|
|
python remove_page_numbers.py ManualDevelop --apply
|
|
```
|
|
|
|
### 2. Удаление HTML файлов
|
|
|
|
```bash
|
|
python delete_html_files.py <директория>
|
|
```
|
|
|
|
Удаляет все `page.html` файлы, оставляя только `content.md`.
|
|
|
|
**Пример:**
|
|
```bash
|
|
python delete_html_files.py ManualDevelop --apply
|
|
```
|
|
|
|
### 3. Реорганизация папок по иерархии
|
|
|
|
```bash
|
|
python reorganize_folders.py
|
|
```
|
|
|
|
Перемещает папки в иерархическую структуру на основе URL из `documentation.json`.
|
|
|
|
## 📝 Примеры использования
|
|
|
|
### Полный цикл работы с Руководством разработчика
|
|
|
|
```bash
|
|
# 1. Парсинг (с ручным входом!)
|
|
python parser.py --url https://1cmycloud.com/console/help/element/8.1/docs/topics/1c-element-overview/ --username username --password password --use-selenium --visible-browser --save-by-pages --max-pages 500 --pages-dir ManualDevelop
|
|
|
|
# 2. Удаление номеров из имен папок
|
|
python remove_page_numbers.py ManualDevelop --apply
|
|
|
|
# 3. Удаление HTML файлов (если не нужны)
|
|
python delete_html_files.py ManualDevelop --apply
|
|
```
|
|
|
|
### Полный цикл работы со Стандартной библиотекой
|
|
|
|
```bash
|
|
# 1. Парсинг (с ручным входом!)
|
|
python "parser stdlib.py" --url https://1cmycloud.com/console/help/element/8.1/docs/stdlib/element/ --username username --password password --use-selenium --visible-browser --save-by-pages --max-pages 5000 --pages-dir StdLib
|
|
|
|
# 2. Реорганизация по иерархии
|
|
python reorganize_folders.py
|
|
|
|
# 3. Очистка
|
|
python remove_page_numbers.py StdLib --apply
|
|
python delete_html_files.py StdLib --apply
|
|
```
|
|
|