Regex: Много одинаковых элементов на странице

Stelsgrower

Client
Регистрация
21.12.2018
Сообщения
134
Реакции
63
Баллы
28
Как можно спарсить регуляркой из кода html именно то, что нужно, когда в коде много одинаковых тэгов?
К примеру:
<table class="table-clear table-content-test">
<thead>
<tr>
<th>Данные</th>
<th class="text-right">День</th>
<th class="text-right">Неделя</th>
<th class="text-right">Месяц</th>
</tr>
</thead>
<tbody>
<tr>
<td>Просмотры</td>
<td class="text-right">18 439</td>
<td class="text-right">129 074</td>
<td class="text-right">553 173</td>
</tr>
<tr>
<td>Посетители</td>
<td class="text-right">6 915</td>
<td class="text-right">48 404</td>
<td class="text-right">207 446</td>
</tr>

Нужно получить только последние цифры после "Посетители".
Итог должен выглядеть примерно вот так:
6 915
48 404
207 446

 
можно разбить на два шага, сначала спарсить то что начинается с <td>Посетители</td> и заканчивается </tr> - разрешить перенос строки
потом то что спарсилось - распарсить регуляркой - до искомого текста - "text-right"> , и после искомого текста </td>
 
можно разбить на два шага, сначала спарсить то что начинается с <td>Посетители</td> и заканчивается </tr> - разрешить перенос строки
потом то что спарсилось - распарсить регуляркой - до искомого текста - "text-right"> , и после искомого текста </td>
Дело в том, что в код очень длинный и там много раз встречается </td>. Если сделать "разрешить перенос" то он выдает огромный код на выходе:
60e1c0368473.png

HpsVxxB
 
Как можно спарсить регуляркой из кода html именно то, что нужно, когда в коде много одинаковых тэгов?
К примеру:
<table class="table-clear table-content-test">
<thead>
<tr>
<th>Данные</th>
<th class="text-right">День</th>
<th class="text-right">Неделя</th>
<th class="text-right">Месяц</th>
</tr>
</thead>
<tbody>
<tr>
<td>Просмотры</td>
<td class="text-right">18 439</td>
<td class="text-right">129 074</td>
<td class="text-right">553 173</td>
</tr>
<tr>
<td>Посетители</td>
<td class="text-right">6 915</td>
<td class="text-right">48 404</td>
<td class="text-right">207 446</td>
</tr>

Нужно получить только последние цифры после "Посетители".
Итог должен выглядеть примерно вот так:
6 915
48 404
207 446
Парсите статистику с сайта pr-cy?
Берете регуляркой, а потом выбираете нужное совпадение.
Код:
Развернуть Свернуть Копировать
(?<=<td\ class="text-right">)[\w\W]*?(?=</td>)
P.S. И не забудьте удалить конеченные пробелы между цифрами (только скопируйте это отступ, там другая кодировка чем у обычного пробела).
 
Последнее редактирование:
  • Спасибо
Реакции: Stelsgrower
Парсите статистику с сайта pr-cy?
Берете регуляркой, а потом выбираете нужное совпадение.
Код:
Развернуть Свернуть Копировать
(?<=<td\ class="text-right">)[\w\W]*?(?=</td>)
P.S. И не забудьте удалить конеченные пробелы между цифрами (только скопируйте это отступ, там другая кодировка чем у обычного пробела).
Вы сначала кладете все в перменную и уже потом еще раз regex'ом парсите то что нужно?
 
Вы сначала кладете все в перменную и уже потом еще раз regex'ом парсите то что нужно?
Можете по разному сделать.
1. Парсить всё в список и брать из списка нужную по номеру строку.
2. Регуляркой выбирать одно совпадение и указывать номер этого совпадения.
Я делаю так:
4.png
 
Соре, вспомнил, что это не работает для web версии, если парсить полностью из всего DOM.
Лучше парсить из текста страницы такой регуляркой:
Код:
Развернуть Свернуть Копировать
(?<=\ \ \ \ \ \ \ )\d[\w\W]*?(?=\ )
И также выбирать по номеру совпадения.
P.S. Лул, тоже работает. КЕК.
 
Последнее редактирование:
Соре, вспомнил, что это не работает для web версии, если парсить полностью из всего DOM.
Лучше парсить из текста страницы такой регуляркой:
Код:
Развернуть Свернуть Копировать
(?<=\ \ \ \ \ \ \ )\d[\w\W]*?(?=\ )
И также выбирать по номеру совпадения.
Я работаю с пост-гет, там чисто код html. Зачем подгружать комп, если в ответе на гет все выдает о посещаемости и тд.
 
  • Спасибо
Реакции: gevolushn
первая регулярка такая как я написал - (?<=<td>Посетители</td>)[\w\W]*?(?=</tr>)
она возьмёт самое короткое совпадение, а дальше аналогично
 
  • Спасибо
Реакции: Stelsgrower
интересно, при гет запросе на любом сайте выдает
Код:
Развернуть Свернуть Копировать
Посещаемость
Информация о посетителях и просмотрах сайта.
Нет данных
при веб запросе все ок ...
 
да это понятно, в лом было реализовывать и разбираться ))
сделал так, просто для наглядности
 

Вложения

  • Спасибо
Реакции: Stelsgrower
Парсите статистику с сайта pr-cy?
Берете регуляркой, а потом выбираете нужное совпадение.
Код:
Развернуть Свернуть Копировать
(?<=<td\ class="text-right">)[\w\W]*?(?=</td>)
P.S. И не забудьте удалить конеченные пробелы между цифрами (только скопируйте это отступ, там другая кодировка чем у обычного пробела).
Пожалуй Ваш вариант самый верный и простой. Применил приведенную в пример регулярку и выбрал то, что нужно по номеру совпадения. Большое спасибо!
 
  • Спасибо
Реакции: gevolushn
если устраивало брать по номеру совпадения - то почему тогда тему создавали, что много одинаковых элементов)
 

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