Простой парсер на PHP

Вебмастера часто сталкиваются с такой проблемой, когда нужно взять с какого-либо сайта определенную информацию и перенести ее на другой.
Можно сохранить информацию на какой то носитель, а потом вставить на сайте в нужном месте, но это не всегда бывает удобным. В некоторых случаях удобнее запустить парсер на сайте с поддержкой php, который сам сольет информацию с нужного ресурса и запишет ее в базу
Самый идеальный и простой вариант для новичков - библиотека PHP Simple HTML DOM Parser. Из названия понятно, что она проста в изучении. Вот так выглядит базовый код:

$html = file_get_html('http://www.pandn.ru'); 
$a = $html->find('a');
В первой строке создается объект страницы, с которой будет браться информация (в данном примере это данный сайт), и записывает в переменную $html, У которой есть несколько функций, например find. Find – ищет объекты в странице подходящие под параметр, например find (‘a’) – вернет массив всех ссылок страницы. Find(‘#myid’) – вернет массив элементов, у которых id равен 'myid'.

Доступ к href самой первой ссылки на сайте осуществляется вот так:
echo $a [ 0 ]->href;
Библиотека работает довольно быстро и не требовательна к ресурсам от сервера. Но как всегда есть оговорки, не каждая страница по зубам ей оказывается. Если не получается отобразить объект со страницы, но он там точно есть, можно взять библиотеку DOM (Document Object Model). Она лучше, но немного непонятна при разработке и изучении.
$doc = new DOMDocument(); 
$doc->loadHTML ( $data ); 
$searchNodes = $doc->getElementsByTagName( "a" ); 
echo $searchNodes[ 0 ]->getAttribute( 'href' );
Этот скрипт создает сначала объект типа DOM, при этом в переменной $data находится код страницы. Затем находит все теги a (ссылки), с помощью вызова
$doc->getElementsByTagName
Затем записывает их в массив $searchNodes. Доступ к параметру href первой ссылки на странице осуществляется с помощью вызова
$searchNodes[ 0 ]->getAttribute( 'href' )
В итоге скрипт получился громоздкий и не очень удобный, но иногда приходится использовать именно его.

Поделитесь статьей со своими друзьями