Парсинг динамического контента с помощью Human Emulator

Парсинг динамического контента с помощью Human Emulator.

Динамический контент это содержимое сайта, которое загружается уже после загрузки основной страницы сайта. Это могут быть любые данные, которые подгружаются на страницу к примеру с помощью js скриптов. Если просмотреть исходный код такой страницы, то этих данных там не будет. Загрузку данных с помощью скриптов используют интернет-магазины, сайты для отображения различных финансовых данных, сайты статистики, банковские сайты и т.д. Парсинг таких сайтов без участия браузера будет достаточно трудоёмким процессом, так как придётся разбираться как работают скрипты и пытаться эмулировать запросы, чтобы сымитировать работу браузера. Это требует определённых знаний и большого количества времени. При чём эту работу придётся выполнять для каждого сайта, с которого нужно спарсить такие данные.

Парсинг динамического контента в Human Emulator выполнять намного проще, так как всё содержимое загружается во встроенный в программу браузер и не нужно ничего имитировать, нужно просто спарсить интересующие нас данные. Алгоритм действий очень простой:

  1. перешли на страницу
  2. дождались загрузки данных
  3. выполнили разбор страницы

В качестве примера получим индекс московской биржи с сайта https://ru.tradingview.com/symbols/MOEX-IMOEX/

// переходим на сайт
 $browser->navigate("https://ru.tradingview.com/symbols/MOEX-IMOEX/");

 // ждём появления элемента
 $div->wait_element_exist_by_attribute("class", "tv-symbol-price-quote__value js-symbol-last",true);

 // получаем внутренний текст элемента
 echo $div->get_inner_text_by_attribute("class", "tv-symbol-price-quote__value js-symbol-last");

результат работы скрипта: 2573.31

так как на этом сайте данные меняются в реальном времени изменим наш код таким образом, что бы получать значение через каждую секунду в течении 10 секунд:

// переходим на сайт
$browser->navigate("https://ru.tradingview.com/symbols/MOEX-IMOEX/");

// ждём появления элемента
$div->wait_element_exist_by_attribute("class", "tv-symbol-price-quote__value js-symbol-last",true);

// получать данные в течении 10 секунд через секунду
for($ii=0;$ii<10;$ii++)
{
	// получаем внутренний текст элемента
	echo $div->get_inner_text_by_attribute("class", "tv-symbol-price-quote__value js-symbol-last");
	echo "<br>";
    sleep(1);
}

результат работы скрипта:
2573.06
2573.08
2573.05
2573.05
2572.93
2572.93
2572.93
2572.83
2572.83
2572.53
2572.63

Как не трудно догадаться таким образом можно получать данные за любой промежуток времени. При этом через использование расписания скриптов, можно запустить такой скрипт перед открытием торгов и получать данные в течении всего времени пока идут торги.

Обсудить на форуме.

Статья по теме: Использование Human Emulator для сбора данных.

Ещё примеры парсинга сайтов с динамическим контентом:

парсинг данных с RTS биржи
парсер Яндекс Маркета
парсер слов с Google.KeywordPlanner
сборщик слов с Яндекс.Вордстат

5/5 - (6 голосов)

Актуальные ответы на сайте (не устаревший пост):


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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.