Парсинг по ссылкам на PHP
Давайте теперь рассмотрим, как парсить многостраничные сайты. Для начала попробуем самый простой вариант, когда на главной странице сайта есть меню со ссылками, ведущими на остальные страницы сайта. Пусть в нашем случае это меню выглядит следующим образом:
<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
.
Модифицируйте предыдущую задачу так, чтобы тайтлы и тексты страниц сохранялись в базу данных.