Как собрать таблицу 3х видов?

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
Добрый день. собираю таблицы. Есть 3 вида таблицы.

С помощью регулярки
<td>[^<>]*?<p>SKU:</p>[^<>]*?</td>[^<>]*?<td>[^<>]*?<p>(.*?)</p>[^<>]*?</td>[^<>]*?

собираю таблицы. Как адаптировать регулярку так чтобы все 3 вида собрало? Отличаются тегами <p>,<b> и без тегов

Пример:

1
<tr>
<td>SKU:</td>
<td>JR5996</td>
</tr>
2
<tr>
<td><p>SKU:</p></td>
<td><p>JR5996<p></td>
</tr>
3
<tr>
<td><b>SKU:</b></td>
<td><b>JR5996</b></td>
</tr>
 

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
20 100
Благодарностей
8 976
Баллы
113
Добрый день. собираю таблицы. Есть 3 вида таблицы.

С помощью регулярки
<td>[^<>]*?<p>SKU:</p>[^<>]*?</td>[^<>]*?<td>[^<>]*?<p>(.*?)</p>[^<>]*?</td>[^<>]*?

собираю таблицы. Как адаптировать регулярку так чтобы все 3 вида собрало? Отличаются тегами <p>,<b> и без тегов

Пример:

1
<tr>
<td>SKU:</td>
<td>JR5996</td>
</tr>
2
<tr>
<td><p>SKU:</p></td>
<td><p>JR5996<p></td>
</tr>
3
<tr>
<td><b>SKU:</b></td>
<td><b>JR5996</b></td>
</tr>
Попробуйте собирать таблицы без привязки к внутр. верстке в список, затем берите строку из списка и заменяйте все теги на пустоту.

Регулярка для сбора строк из HTML-таблицы в список:
<tr>[\w\W]*?</tr>
Регулярка для очистки от тегов:
<.*?>
62195

62194
 
Последнее редактирование:
  • Спасибо
Реакции: art22

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
Попробуйте собирать таблицы без привязки к внутр
то что я привел пример это просто пример из большой таблицы, пару строк
Таблица большая, в одной таблице может быт до 15 строк. По этому нужно каждую ячейку собрать по отдельности и добавить в ексель. Мне нужно вытащить только артикул и т п.
 
Последнее редактирование:

art22

Client
Регистрация
24.06.2016
Сообщения
484
Благодарностей
69
Баллы
28
Почему когда регулярку указываю без тегов <p>,<b> не парсит данные? По сути должен парсить данные с тегами и без


<td>[^<>]*?SKU:[^<>]*?</td>[^<>]*?<td>[^<>]*?(.*?)[^<>]*?</td>[^<>]*?
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
<tr[^<>]*>\s*<td[^<>]*>(?:<[pb]>)*SKU:(?:</[pb]>)*</td>\s*<td[^<>]*>(?:<[pb]>)*([^<>]+)(?:</[pb]>)*</td>\s*</tr>
но оно того не стоит. Лучше просто парсить сначала весь блок, а потом по одному атрибуту распарсивать
 
  • Спасибо
Реакции: art22

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