# Метод паука с отсевом в 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. Расскажите, по каким особенностям можно отделить страницы статей от страниц с оглавлениями.

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

←→
↑