- PVSM.RU - https://www.pvsm.ru -

Простой способ парсинга сайтов

Недавно мне потребовалось сделать небольшой парсер на php для интернет-магазина. Я не стал изобретать велосипед и взял стандартную библиотеку. Но тут наткнулся на неожиданную проблему — библиотека парсит только правильно сверстанные сайты. Мой таким не был. Выходом из этой проблемы оказалось использование ещё более громоздких библиотек в которых сам черт ногу сломит. Я бросил это дело и решил парсить обычными регулярными выражениями. Всё шло хорошо когда парсились простые строки вроде цены и заголовков, но как дело дошло до средних размеров текста в котором встречаются теги br, stong и другие появились сложности.

Заголовок и цены я парсил выражением /тег([^<]*)/im Но текст не строка — в нём могут быть тоже теги, причем какие я точно знать не могу. Можно конечно напрячься и создать всеописывающие выражение — но я сделал всё проще.

Нужный текст для парсиринга был заключен в теги <td></td>. С помощью функции explode('<td>',$html) я раздел страницу на две части. Далее нижнюю часть страницы я опять разделял на две части — explode('</td>',$html_down) и уже брал верхнюю часть. В итоге я получаю то что хотел — текст заключенный в теги <td> и </td>.

Вот код целиком:

$res = explode('<td>',$html,2);<br>
$res = explode('</td>',$res[1],2);<br>
$res = $res[0];	

Здесь $html — это исходная страница в которой нужно искать что-то, а $res — результат поиска.

Конечно это не идеально и не всякую страницу можно вот так распарисить.
Но если можно почему бы и нет?

P.S. Я не изобрел что-то новое — уверен кто-то до меня это уже использовал. Просто хотелось поделиться с вами своими мыслями.

Автор: Murloc


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/11487