АКЦИЯ: бесплатные месячные курсы по созданию сайтов
на выбор: верстка, JavaScript, PHP или фреймворки. Сегодня последний день для записи! Жми!
⊗ppPsMtCDo 50 of 84 menu
Бесплатная Тренировка Верстки. Приглашаются желающие поверстать!

Метод паука с отсевом в PHP

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

Давайте вспомним место, где мы что-то делаем с текстом страницы:

<?php var_dump($text); // делаем что-то с текстом ?>

В этом месте мы и будем отсеивать лишние страницы. При этом как правило ссылки мы будем собирать со всех страниц (иначе можно куда-то не попасть на сайте), а сохранять в базу будем только целевые страницы, которые нам нужны. Итак, давайте посмотрим, как мы можем отсеивать страницы.

Первый и самый надежный способ применим, если URL целевых страниц имеет отличие от нецелевых. К примеру, у сайта из предыдущего урока целевые страницы имели расширение .html, а нецелевые - нет. В этом случае мы можем нацелить нашу проверку на это:

<?php if (!preg_match('#\.html$#', $path)) { var_dump($text); } ?>

Второй способ применим, если целевые страницы имеют характерное отличие в верстке. Это может быть id, некий специфичный CSS класс или наличие какого-нибудь тега. Пример:

<?php if (preg_match('#<main id="content">#', $text)) { var_dump($text); } ?>

Третий способ применим, когда целевые страницы имеют некую характерную особенность текста. Например, вот так:

<?php if (preg_match('#<title>страница \d+</title>#', $text)) { var_dump($text); } ?>

Изучите сайт code.mu. Расскажите, по каким особенностям можно отделить страницы статей от страниц с оглавлениями.

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