Парсинг сайтов. Библиотека phpQuery. Урок 3

Парсинг сайтов. Библиотека phpQuery

От автора: в этом уроке мы с вами продолжим работу с библиотекой phpQuery, которая значительно упрощает парсинг сайтов. В предыдущем уроке мы получали контент одной страницы. Но что делать, если необходим контент сразу нескольких страниц. В уроке мы создадим функцию, которая сможет переходить по страницам пагинации и парсить заданное количество страниц сайта.

скачать исходникискачать урок

В видеоверсии урока вы найдете подробное комментирование создаваемой функции. Здесь же я приведу итоговый код урока:

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 = 'http://www.kolesa.ru/news/';
$start = 0;
$end = 3;
parser($url, $start, $end);

Как видим, функция parser() получаем и парсит контент заданной страницы. Затем она проверяет, есть ли следующая страница для парсинга и, если таковая есть, функция рекурсивно вызывает себя, передавая параметром новый адрес.

Количество страниц, которые необходимо спарсить, задается в параметре $end. Все достаточно просто. На этом текущий урок завершен. Удачи!

Курс по программированию на языке PHP

Изучите PHP с нуля до результата!

Смотреть курс

Метки:

Комментарии Вконтакте:

Комментарии Facebook:

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Я не робот.

Spam Protection by WP-SpamFree