Парсинг динамического контента с помощью Human Emulator.
Динамический контент это содержимое сайта, которое загружается уже после загрузки основной страницы сайта. Это могут быть любые данные, которые подгружаются на страницу к примеру с помощью js скриптов. Если просмотреть исходный код такой страницы, то этих данных там не будет. Загрузку данных с помощью скриптов используют интернет-магазины, сайты для отображения различных финансовых данных, сайты статистики, банковские сайты и т.д. Парсинг таких сайтов без участия браузера будет достаточно трудоёмким процессом, так как придётся разбираться как работают скрипты и пытаться эмулировать запросы, чтобы сымитировать работу браузера. Это требует определённых знаний и большого количества времени. При чём эту работу придётся выполнять для каждого сайта, с которого нужно спарсить такие данные.
Парсинг динамического контента в Human Emulator выполнять намного проще, так как всё содержимое загружается во встроенный в программу браузер и не нужно ничего имитировать, нужно просто спарсить интересующие нас данные. Алгоритм действий очень простой:
- перешли на страницу
- дождались загрузки данных
- выполнили разбор страницы
В качестве примера получим индекс московской биржи с сайта https://ru.tradingview.com/symbols/MOEX-IMOEX/
1 2 3 4 5 6 7 8 9 |
// переходим на сайт $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 секунд:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
// переходим на сайт $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
сборщик слов с Яндекс.Вордстат
Добавить комментарий
Для отправки комментария вам необходимо авторизоваться.