Распределение контента по блокам при парсинге

Yurius38

Client
Регистрация
02.12.2018
Сообщения
18
Благодарностей
0
Баллы
1
Всем привет, прошу помощи в осуществлении следующей задумки:
Пишу парсер информации с сайтов, нужно чтобы парсился контент по блокам (заголовкам h1-h2-h3) и распределялся по файлам.
Например, есть сайт с контентом, где

<h2>Вступление</h2>
Все привет
<h2>Середина</h2>
Все будет хорошо

Мне нужно чтобы создавалось два файла, в одном:
<h2>Середина</h2>
Все будет хорошо

и в другом
<h2>Вступление</h2>
Все привет

Понимаю, что нужно чтобы парсинг кода был снизу вверх, шаблон берет код до тех пор, пока не дойдет до заголовка и сохраняет это в одну переменную, затем идет дальше до следующего заголовка и так до конца. Но поскольку новичок, не знаю как это можно написать на кубиках (С вообще не знаю).
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Ну, заголовки спарсить можно через XPath, тема есть на форуме. Я думаю найдешь кубик C# ну или другой.
Xpath сам такой: "@//h1|//h2|//h3|//h4|//h5|//h6"

А вот насчет контента - он же может быть по-разному обернут... тут универсального подхода, к сожалению нет.... Можно, конечно попробовать через PageText как-нибудь выехать, типа искать заголовки в тексте, типа текст от заголовка и до заголовка, парсить его, трим() делать и вроде как получится... короче надо фантазию подключить. Волшебную палочку тебе никто не даст.
 

Yurius38

Client
Регистрация
02.12.2018
Сообщения
18
Благодарностей
0
Баллы
1
Ну, заголовки спарсить можно через XPath, тема есть на форуме. Я думаю найдешь кубик C# ну или другой.
Xpath сам такой: "@//h1|//h2|//h3|//h4|//h5|//h6"

А вот насчет контента - он же может быть по-разному обернут... тут универсального подхода, к сожалению нет.... Можно, конечно попробовать через PageText как-нибудь выехать, типа искать заголовки в тексте, типа текст от заголовка и до заголовка, парсить его, трим() делать и вроде как получится... короче надо фантазию подключить. Волшебную палочку тебе никто не даст.
А как указать, что нужно спарсить код до первого найденного элемента (h1,h2,h3)?
 

TwistDanceR

Активный пользователь
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
А как указать, что нужно спарсить код до первого найденного элемента (h1,h2,h3)?
Через регулярные выражения. Самое короткое до h1 .*?(?=h1) Вроде так... это на скорую руку. Но тебе же нужно ограничиваться ещё между.... в общем логику надо продумать до конца.
 

Yurius38

Client
Регистрация
02.12.2018
Сообщения
18
Благодарностей
0
Баллы
1
в общем логику надо продумать до конца.
Вринципе логика работы уже продумана:
1 Кубик - начиная снизу берет весь текст до </h2>/</h3>/</h4>
2 Кубик - вырезает этот кусок кода и сохраняет в переменную
3 Кубик - начиная снизу берет весь текст до <h2>/<h3>/<h4>(включительно)
4 Кубик - вырезает этот кусок кода и сохраняет в переменную
5 Кубик - называет файл именем заголовка и туда сохраняется данный текст
Далее все повторяется до тех пор пока текста не останется для парсинга
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)