# Метод паука на массиве для парсинга сайтов в PHP

Описанный в предыдущем уроке поэтапный метод достаточно неудобный и это неудобство растет при увеличении количества подкатегорий. Существует альтернативный метод, который называется методом паука (en. crawler).

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

Таким образом получается универсальный парсер, который может спарсить любой сайт, независимо от структуры его категорий.

Реализуем описанный алгоритм:

`<?php $paths = [ 'http://targ.loc/', ]; $i = 0; while ($i < count($paths)) { $path = $paths[$i]; $text = getPage($path); $hrefs = getHrefs($text); foreach ($hrefs as $href) { if (!in_array($href, $paths)) { $paths[] = $href; } } var_dump($text); // делаем что-то с текстом $i++; } var_dump($paths); ?>`

Скачайте сайт по ссылке targ1.zip и разверните его у себя. Напишите парсер, который спарсит все страницы сайта и получит содержимое тегов `title` и `main`.

Модифицируйте предыдущую задачу так, чтобы тайтлы и тексты страниц сохранялись в базу данных.

Расскажите, какие преимущества и недостатки вы видите в поэтапном методе и в методе паука.

← →
↑