Поэтапный метод парсинга сайтов в 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.

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



Чат с GPT Компилятор