Парсинг сайтов. Библиотека 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. Все достаточно просто. На этом текущий урок завершен. Удачи!

Самые свежие новости IT и веб-разработки на нашем Telegram-канале

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

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

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

Метки:

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

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

Комментарии (4)

  1. Павел

    Подскажите пожалуйста как тут вытащить пагинацию?
    У меня почему то идет по кругу одна и та же страница.

    • Андрей Кудлай

      Задайте лучше Ваш вопрос на форуме, здесь код ломается и не понять суть проблемы.

  2. Георгий

    Добрый день!

    Меня зовут Фомичев Георгий.
    Я являюсь основателем Endurance. Мы делаем роботов и чатботов.

    Мне интересна тема парсинга сайта с целью получения той информации, которая нам нужна.
    Скажите пожалуйста, есть ли у Вас API?
    для нашего бота:
    old.endurancerobots.com/pogovorite-s-nashim-chatbotom

    В идеале мы хотели бы
    передавать Вам запрос HTTP / JSON, например, «что такое квант»
    и передавать ссылку «https://ru.wikipedia.org/wiki/%D0%9A%D0%B2%D0%B0%D0%BD%D1%82 »

    и получать обратно текстовые блоки где найдена та или иная информация (в идеале с учетом синонимов)
    Также вопрос, есть ли какие либо дополнительные параметры, которые можно вводить и регулировать при парсинге?

    С Уважением, Фомичев Георгий
    Основатель Endurance
    +79162254302

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

Ваш 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