Парсер HTML

3203 3 10 0

Онлайн парсинг HTML разметки. Инструмент прежде всего предназначен для парсинга повторяемых данных: таблицы, списки, блоки. К примеру извлечение из HTML таблицы только колонки со списком городов. Шаблон результата позволяет конвертировать данные из кода в любой формат. Возможность извлечения сразу нескольких данных. Кроме html можно также парсить xml разметку.

Вставьте HTML
×
Результат
×
Скопировать

Как пользоваться сервисом:

Синтаксис поиска тегов аналогичен CSS

1. Необходимо вставить HTML в первое поле «Вставьте HTML». Код должен быть валидным, т.е. если есть открывающий тег, то должен быть и закрывающий и наоборот.

2. Указать тег повторяемого блока. Это может быть название тега (tr — для таблиц, li — для списков, div и т.д.) или класс тега (название класса указывать с точкой в начале), к примеру если в коде указано: class="post", то нужно указать так: .post

3. Шаблон результата конвертирования. Шаблон можно задавать любой произвольный, например указать разделитель двоеточие, обернуть полученные данные новыми тегами, создать массив данных и т.д. Непосредственно в самом шаблоне нужно задавать макросы для поиска и извлечения дочерних элементов внутри повторяемого тега. Макрос задается внутри двойных фигурных скобок {{}}. В результате вместо макроса будет подставлен найденный этим макросом текст.

Примеры макросов:

{{item}} — для получения текста или значений атрибутов (например {{item[[href]]}}) непосредственно из самого повторяемого тега, который вы укажите в поле «Повторяемый тег».

{{td:nth-child(1)}} — здесь указывается тег td (и номер колонки) таблицы внутри повторяемого тега. :nth-child(1) — обозначается порядковый номер тега. {{td:nth-child(1)}} — будет получена первая колонка таблицы, {{td:nth-child(2)}} — вторая и т.д.

{{.name}} — кроме названия тегов (td, div, span, td,…) можно указать и название класса {{.name}}. Если классов с одинаковым названием несколько, то нужно указать их номер: {{.name:nth-child(1)}}, {{.name:nth-child(2)}}. Если есть одинаковые классы, но у разных тегов, то можно указать так: {{div.name}}, {{span.name}}.

{{a[[href]]}} — получение атрибутов вложенных тегов. По умолчанию происходит парсинг текста или html внутри последнего дочернего повторяемого элемента. Если нужно получить не текст, а значение атрибута, то после указания тегов или классов нужно в двойных квадратных скобках [[]] указать название атрибута: href, title, data-id, src, alt и т.д.

{{item[[href]]}} — получение атрибутов повторяемого тега.

{{.content span.name a}} — пример извлечения текста вложенных блоков.

{{[itemprop=url]}} — поиск по атрибуту

((n)) — макрос номера повторяемого тега. Можно использовать для нумерации строк таблицы или индекса массива.

Для того, чтобы каждый найденный элемент был с новой строки, просто после макроса или шаблона добавьте одну пустую строку

Готовые примеры парсинга данных:
(кликните на блок, чтобы заполнить поля примером)

Извлечение названия города и населения из HTML таблицы

Повторяемый тег: tr
Дочерние теги и шаблон: {{td:nth-child(1)}}: {{td:nth-child(2)}}

HTML таблица:

<tr>
<td>Москва</td>
<td>12 655 000</td>
<td>гор.ф.з. Москва</td>
</tr>
<tr>
<td>Санкт-Петербург</td>
<td>5 384 000</td>
<td>гор.ф.з. Санкт-Петербург</td>
</tr>
<tr>
<td>Новосибирск</td>
<td>1 620 000</td>
<td>Новосибирская область</td>
</tr>
<tr>
<td>Екатеринбург</td>
<td>1 495 000</td>
<td>Свердловская область</td>
</tr>
<tr>
<td>Казань</td>
<td>1 257 000</td>
<td>Республика Татарстан</td>
</tr>

Извлечение названия пункта меню из тегов li с дочерними тегами

Повторяемый тег: li
Дочерние теги и шаблон: - {{span}}

HTML:

<li>
<a itemprop="url" href="https://webtoolsner.ru/tools/converting/">
<span itemprop="name">Конвертеры</span>
</a>
</li>
<li>
<a itemprop="url" href="https://webtoolsner.ru/tools/generators/">
<span itemprop="name">Генераторы</span>
</a>
</li>
<li>
<a itemprop="url" href="https://webtoolsner.ru/tools/tekst/">
<span itemprop="name">Текст и строки</span>
</a>
</li>

Извлечение текста из тегов p без дочерних тегов

Повторяемый тег: p
Шаблон: - {{item}}

HTML:

<p>Конвертеры</p>
<p>Генераторы</p>
<p>Текст и строки</p>

Извлечение значения атрибута href с дочерними тегами

Повторяемый тег: li
Дочерние теги и шаблон: - {{a[[href]]}}

HTML:

<li>
<a itemprop="url" href="https://webtoolsner.ru/tools/converting/">
<span itemprop="name">Конвертеры</span>
</a>
</li>
<li>
<a itemprop="url" href="https://webtoolsner.ru/tools/generators/">
<span itemprop="name">Генераторы</span>
</a>
</li>
<li>
<a itemprop="url" href="https://webtoolsner.ru/tools/tekst/">
<span itemprop="name">Текст и строки</span>
</a>
</li>

Извлечение данных из HTML таблицы и конвертация в массив

Повторяемый тег: tr
Дочерние теги и шаблон: array(
'name' => '{{td:nth-child(1)}}',
'number' => '{{td:nth-child(2)}}',
'obl' => '{{td:nth-child(3)}}',
'item' => '((n))'
),


HTML таблица:

<tr>
<td>Москва</td>
<td>12 655 000</td>
<td>гор.ф.з. Москва</td>
</tr>
<tr>
<td>Санкт-Петербург</td>
<td>5 384 000</td>
<td>гор.ф.з. Санкт-Петербург</td>
</tr>
<tr>
<td>Новосибирск</td>
<td>1 620 000</td>
<td>Новосибирская область</td>
</tr>
<tr>
<td>Екатеринбург</td>
<td>1 495 000</td>
<td>Свердловская область</td>
</tr>
<tr>
<td>Казань</td>
<td>1 257 000</td>
<td>Республика Татарстан</td>
</tr>

Извлечение атрибутов из повторяемого тега .my_class, url из вложенного атрибута href и названия ссылки span

Повторяемый тег: .my_class
Дочерние теги и шаблон:
title: {{item[[title]]}}
i: {{item[[i]]}}
url: {{a[[href]]}}
name: {{span}}


HTML:

<div class="my_class" title="Конвертеры" i="1">
<a href="https://webtoolsner.ru/tools/converting/">
<span>Конвертеры кода</span>
</a>
</div>
<div class="my_class" title="Генераторы" i="2">
<a href="https://webtoolsner.ru/tools/generators/">
<span>Генераторы чисел</span>
</a>
</div>
<div class="my_class" title="Числа" i="3">
<a href="https://webtoolsner.ru/tools/tekst/">
<span>Обработка чисел</span>
</a>
</div>

Извлечение данных из xml разметки

Повторяемый тег: offer
Дочерние теги и шаблон:
title: {{name}}
price: {{price}}
id: {{item[[id]]}}
duration: {{duration}} {{duration[[unit]]}}

---


XML:

<offer available="true" id="1">
<categoryId>1</categoryId>
<currencyId>RUB</currencyId>
<description>Онлайн-курс с обратной связью по домашним заданиям</description>
<modified_time>1655220983</modified_time>
<name>Интернет-маркетолог профессионал</name>
<oldprice>49500.00</oldprice>
<price>32175.00</price>
<duration unit="лет">4</duration>
</offer>
<offer available="true" id="3">
<categoryId>2</categoryId>
<currencyId>RUB</currencyId>
<modified_time>1655220983</modified_time>
<name>Интернет маркетолог с нуля</name>
<oldprice>146790.00</oldprice>
<price>73395.00</price>
<duration unit="часов">54</duration>
</offer>
<offer available="true" id="5">
<categoryId>2</categoryId>
<currencyId>RUB</currencyId>
<modified_time>1655220983</modified_time>
<name>Профессия "Ведущий интернет-маркетолог"</name>
<oldprice>199500.00</oldprice>
<price>109725.00</price>
<duration unit="дней">67</duration>
</offer>

Поменять местами певую и вторую колонку в таблице

Повторяемый тег: tr
Дочерние теги и шаблон:

<tr>
<td>{{td:nth-child(2)}}</td>
<td>{{td:nth-child(1)}}</td>
<td>{{td:nth-child(3)}}</td>
</tr>


HTML таблица:

<tr>
<td>Москва</td>
<td>12 655 000</td>
<td>гор.ф.з. Москва</td>
</tr>
<tr>
<td>Санкт-Петербург</td>
<td>5 384 000</td>
<td>гор.ф.з. Санкт-Петербург</td>
</tr>
<tr>
<td>Новосибирск</td>
<td>1 620 000</td>
<td>Новосибирская область</td>
</tr>
<tr>
<td>Екатеринбург</td>
<td>1 495 000</td>
<td>Свердловская область</td>
</tr>
<tr>
<td>Казань</td>
<td>1 257 000</td>
<td>Республика Татарстан</td>
</tr>

Парсинг всех ссылок со страницы

Повторяемый тег: a
Дочерние теги и шаблон:

{{item[[href]]}}

Поделиться:
10
0
Комментарии

Неплохой парсер, но есть куда стремиться. Иногда возникают сложности с парсингом сложных HTML структур. Хотелось бы видеть больше готовых примеров и более подробную документацию по использованию макросов. В целом, инструмент полезный и помогает автоматизировать рутинные задачи.

Реально помогает, как я раньше не мог найти, постоянно копировал руками из таблицы. Сейчас сохранённый шаблон и его использую постоянно только немного дорабатываю.

За 10 минут разобрался и собрал огромный список строк из таблицы. руками наверно два дня бы копировал,так как одну колонку не получалось скопировать, копировались и другие.

Добавить комментарий
Сообщения ошибках, пожелания по улучшению инструмента и т.д. оставляйте в комментариях.