Давайте теперь рассмотрим, как парсить многостраничные сайты. Для начала попробуем самый простой вариант, когда на главной странице сайта есть меню со ссылками, ведущими на остальные страницы сайта. Пусть в нашем случае это меню выглядит следующим образом:
<nav>
<a href="http://targ.loc/1.html">1</a>
<a href="http://targ.loc/2.html">2</a>
<a href="http://targ.loc/3.html">3</a>
<a href="http://targ.loc/4.html">4</a>
<a href="http://targ.loc/5.html">5</a>
</nav>
Пусть каждая из страниц, на которые ведет меню, выглядит следующим образом:
<main>
text1
</main>
Пусть мы начинаем парсить с главной страницы сайта:
<?php
$start = 'http://targ.loc/';
?>
Получим текст главной страницы:
<?php
$main = getPage($start);
?>
Получим ссылки меню:
<?php
$hrefs = getHrefs($main, 'nav a');
?>
Теперь циклом переберем ссылки и спарсим все нужные страницы:
<?php
foreach ($hrefs as $href) {
$text = getPage($href);
var_dump($text);
}
?>
Скачайте сайт по ссылке targ1.zip
и разверните его у себя. Напишите парсер,
который зайдет главную страницу,
заберет все ссылки из меню,
откроет все страницы по ссылкам
и получит содержимое тегов title
и main.
Модифицируйте предыдущую задачу так, чтобы тайтлы и тексты страниц сохранялись в базу данных.