Парсер. Что такое. Простейший пример.

Итак что же это такое.

Предположим вы захотели брать какую-нибудь информацию прям с сайта. Чтобы ваш php скрипт заходил на другой сайт и брал какую-то часть информации и выводил у вас. Это как раз и есть парсер(parser) или граббер, как его иногда называют.

Сделаем это на примере моего сайта. Допустим вам необходимо брать с моего сайта заголовки статей, которые выведены на главной странице.

Итак для этого необходимо: Получить весь контент страницы и, анализируя весь код html, который мы получили, выбрать необходимые части кода и записать их в переменные, чтобы после ими манипулировать, вывести в браузер напрмер.

Итак, для начала откроем исходный код страницы. Это делается почти во всех браузерах нажатием правой кнопки на странице и выбирается соответсввующий пункт меню (в опере например - "Исходный код", если есть FireFox и плагин к нему FireBug, то это очень упрощает задачу. ). Видим что все заголовки заключены в теги <h2>, к примеру:

<h2 class="entry-title">
<a href="http://softlet.kz/privet-mir/" title="Постоянная ссылка: Привет, мир!" rel="bookmark">Привет, мир!</a>
</h2>

То есть нам будет необходимо выделить все что находится между <h2 class="entry-title"> и </h2>

Итак проанализировав исходный код , приступим к исполнению нашего замысла.

Для начала получим

<?
$file=file_get_contents('http://softlet.kz');
?>

Вся наша страница теперь в переменной $file. Теперь нам осталось выделить из этого необходимые нам данные. Это можно сделать при помощи функции preg_match_all и правильно составленной регулярке. Чаще всего хватает регулярки вида '/<h2 class="entry-title">(.*)<\/h2>/iu', где вначале пишется открывающийся тег <h2 class="entry-title">, далее (.*) - означает любые символы , плюс к этому они будут выбраны в отдельный массив, после видим закрывающийся тег </h2>. Итак получим:

<?
$file=file_get_contents('http://softlet.kz');

preg_match_all('/<h2 class="entry-title">(.*)<\/h2>/iu', $file, $elements);
?>

Результат запишется в массив $elements. Он будет вида:

Array
(
[0] => Array
(
[0] => <h2 class="entry-title"><a href="http://softlet.kz/curl-ubuntu/" title="Постоянная ссылка: Установка cURL в UBUNTU" rel="bookmark">Установка cURL в UBUNTU</a></h2>
[1] => <h2 class="entry-title"><a href="http://softlet.kz/form-validate/" title="Постоянная ссылка: Валидация форм" rel="bookmark">Валидация форм</a></h2>
[2] => <h2 class="entry-title"><a href="http://softlet.kz/hosting-and-domains/" title="Постоянная ссылка: Хостинг Домены и с чем их едят." rel="bookmark">Хостинг Домены и с чем их едят.</a></h2>
[3] => <h2 class="entry-title"><a href="http://softlet.kz/hdtv-ubuntu/" title="Постоянная ссылка: HDTV Ubuntu &amp;#8211; 100% рабочий метод" rel="bookmark">HDTV Ubuntu &amp;#8211; 100% рабочий метод</a></h2>

[4] => <h2 class="entry-title"><a href="http://softlet.kz/privet-mir/" title="Постоянная ссылка: Привет, мир!" rel="bookmark">Привет, мир!</a></h2>
)

[1] => Array
(
[0] => <a href="http://softlet.kz/curl-ubuntu/" title="Постоянная ссылка: Установка cURL в UBUNTU" rel="bookmark">Установка cURL в UBUNTU</a>
[1] => <a href="http://softlet.kz/form-validate/" title="Постоянная ссылка: Валидация форм" rel="bookmark">Валидация форм</a>
[2] => <a href="http://softlet.kz/hosting-and-domains/" title="Постоянная ссылка: Хостинг Домены и с чем их едят." rel="bookmark">Хостинг Домены и с чем их едят.</a>
[3] => <a href="http://softlet.kz/hdtv-ubuntu/" title="Постоянная ссылка: HDTV Ubuntu &amp;#8211; 100% рабочий метод" rel="bookmark">HDTV Ubuntu &amp;#8211; 100% рабочий метод</a>

[4] => <a href="http://softlet.kz/privet-mir/" title="Постоянная ссылка: Привет, мир!" rel="bookmark">Привет, мир!</a>
)

)

Получается что все наши заголовки хранятся в виде массива в $elements[1]. Выводим их. В тоге получаем.

<?
$file=file_get_contents('http://softlet.kz');
preg_match_all('/<h2 class="entry-title">(.*)<\/h2>/iu', $file, $elements);
print implode('<br>', $elements[1]);
?>

В результате получим ссылки на статьи на этот сайт, написанные с новой строки.

Как видите все совсем просто. :) желаю удачи.

Запись опубликована в рубрике Веб-программирование. Добавьте в закладки постоянную ссылку.

2 комментария: Парсер. Что такое. Простейший пример.

  1. Уведомление: Как вывести на сайт ленту RSS. | softlet.kz

  2. lifephysic говорит:

    Слушай у тебя по рекламе долбят. Или нет. Предыдущая твоя статья была конечно проще, но здесь есть новые подходы.