Парсинг HTML в таблицу из офф-лайн дока

Max Human

Пользователь
Регистрация
20.04.2014
Сообщения
69
Благодарностей
2
Баллы
8
Всем привет, давненько не заходил с вопросами
Вот назрел один, нужна Ваша помощь.

Есть HTML страница, на диске на ПК (не онлайн), надо вытащить из этого файла инфу и разложить по ячейкам в таблицу.

Заминка вышла на этапе парсинга, проблема в последовательности выбора строк. Вот пример HTML кода:
Код:
<tr class="user-slot" id="user-9990">
...
    <span>
        <div class="user-name 9990" rel="9990" name="name">Алина Кабаева</div><br>[email protected]<br>
        <div class="user-fone 9990" rel="9990" name="fone">+7555678987</div>Произвольный текст 1...<br>Произвольный текст 2...<br>
        <div class="user-location 9990" rel="9990" name="location">New York</div>
        <b>Произвольный текст 3...</b><br>
        <b>Произвольный текст 4...</b>
    </span>
...
</tr>

<tr class="user-slot" id="user-9991">
...
    <span>
        <div class="user-name 9991" rel="9991" name="name">Миша Дымов</div><br><br> // нет почты...
        <div class="user-fone 9991" rel="9991" name="fone">+7559128984</div>Произвольный текст 1...<br>Произвольный текст 2...<br>
        <div class="user-location 9991" rel="9991" name="location">г. Москва</div>
        <b>Произвольный текст 3...</b><br>
        <b>Произвольный текст 4...</b>
    </span>
...
</tr>


<tr class="user-slot" id="user-9992">
...
    <span>
        <div class="user-name 9992" rel="9992" name="name">Мария Салова</div><br>[email protected]<br>
        <div class="user-fone 9992" rel="9992" name="fone"></div>Произвольный текст 1...<br>Произвольный текст 2...<br> // нет телефона...
        <div class="user-location 9992" rel="9992" name="location">пос. Жопкино</div>
        <b>Произвольный текст 3...</b><br>
        <b>Произвольный текст 4...</b>
    </span>
...
</tr>
Что получается:

Когда тащу ФОЮ, а потом Почту, то если в строке почты нет, то следующий мыльник записывается под предыдущий ФИО, т.е. смещается на одну строку вверх (записывается не под нужное ФИО). Тоже и с номером телефона.

Как это дело зациклить, что бы получалось как надо? Ниже пример:

Что должно получится:
Алина Кабаева
[email protected]
+7555678987
Произвольный текст 1...
Произвольный текст 2...
New York
Произвольный текст 3...
Произвольный текст 4...

Миша Дымов
// нет почты...
+7559128984
Произвольный текст 1...
Произвольный текст 2...
г. Москва
Произвольный текст 3...
Произвольный текст 4...

Мария Салова
[email protected]
// нет телефона...
Произвольный текст 1...
Произвольный текст 2...
пос. Жопкино
Произвольный текст 3...
Произвольный текст 4...
Заранее, благодарю
 

Max Human

Пользователь
Регистрация
20.04.2014
Сообщения
69
Благодарностей
2
Баллы
8
В теории вижу такое решение:
Шаг 1. Вытягиваю ФИО и сохраняю в таблицу;
Шаг 2. Беру 2 ФИО и между ними ищу Мыло, если нахожу - то записываю к первому ФИО;

пока так, но как то муторно...
 

sof

Client
Регистрация
15.04.2013
Сообщения
831
Благодарностей
185
Баллы
43
Используй разделитель (String.Tab) и будет записываться поочередно, где нет данных просто будет пустая ячейка и все данные будут в тех столбцах где это необходимо
 

Max Human

Пользователь
Регистрация
20.04.2014
Сообщения
69
Благодарностей
2
Баллы
8
sof, не совсем понял как мне это может помочь?! Приведи элементарный пример, если не сложно.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 714
Баллы
113
пос. Жопкино :D

Парсите не отдельные типы данных а сначала блоки с классом user-slot
и потом уже каждый отдельный блок потрошить регулярками и приводить к необходимому формату.
 

Max Human

Пользователь
Регистрация
20.04.2014
Сообщения
69
Благодарностей
2
Баллы
8
rostonix, именно так и сделал.
Знаю же, что сложные задачи надо разбивать на более простые и все ровно, каждый раз буксую ))

Спасибо.
 

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