Парсинг сайтов. Библиотека 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() получаем и парсит контент заданной страницы. Затем она проверяет, есть ли следующая страница для парсинга и, если таковая есть, функция рекурсивно вызывает себя, передавая параметром новый адрес.

Фреймворк YII2. Быстрая разработка с современным PHP фреймворком

Узнай тонкости современной веб-разработки с помощью фреймворка YII2

Узнать подробнее

Количество страниц, которые необходимо спарсить, задается в параметре $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