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