От автора: в этом уроке мы с вами продолжим работу с библиотекой phpQuery, которая значительно упрощает парсинг сайтов. В предыдущем уроке мы получали контент одной страницы. Но что делать, если необходим контент сразу нескольких страниц. В уроке мы создадим функцию, которая сможет переходить по страницам пагинации и парсить заданное количество страниц сайта.
В видеоверсии урока вы найдете подробное комментирование создаваемой функции. Здесь же я приведу итоговый код урока:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
function parser($url, $start, $end){ if($start < $end){ $file = file_get_contents($url); $doc = phpQuery::newDocument($file); foreach($doc->find('.articles-container .post-excerpt') as $article){ $article = pq($article); $img = $article->find('.img-cont img')->attr('src'); $text = $article->find('.pd-cont')->html(); echo "<img src='$img'>"; echo $text; echo '<hr>'; } $next = $doc->find('.pages-nav .current')->next()->attr('href'); if( !empty($next) ){ $start++; parser($next, $start, $end); } } } $url = '//www.kolesa.ru/news/'; $start = 0; $end = 3; parser($url, $start, $end); |
Как видим, функция parser() получаем и парсит контент заданной страницы. Затем она проверяет, есть ли следующая страница для парсинга и, если таковая есть, функция рекурсивно вызывает себя, передавая параметром новый адрес.
Количество страниц, которые необходимо спарсить, задается в параметре $end. Все достаточно просто. На этом текущий урок завершен. Удачи!
Комментарии (4)