Браузер: Chromium.
Логика:
1. Переходим по ссылке на видео на Youtube;
2. После перехода на видео загружаются новые комментарии, до достижения лимита и скрипт парсит основные данные (никнейм автора, дата комментария, текст комментария, количество лайков);
3. Все данные складываются в отдельный файл result.csv;
Скрипт состоит:
Запускаемый файл parser_comments_youtube.php. В папке tools в файле functions.php прописаны подключаемые команды.
В файле result.scv записывается информация с результатами сбора.
В папке log хранятся логи работы скрипта. Для каждого дня отдельный файл с логами.
Скачать скрипт: Настройки скрипта:
// ссылка на видео $url = "youtube.com/watch?v=6wUWSBOJJZY"; // количество комментарием для парсинга $comments_limit = 20;
Код скрипта:
// переходим по ссылке на видео $browser->navigate($url); sleep(4); // прокручиваем скролл пока не подгрузиться необходимое количество комментариев while(true) { // получаем заданные объекты $obj = $element->get_all_by_tag("YTD-COMMENT-THREAD-RENDERER"); // подсчитаем $cur_num_obj = count($obj->elements); echo "комментариев: $cur_num_obj<br>"; // если количество подгрузившихся комментариев меньше чем // необходимо - скроллим еще вниз if ($cur_num_obj < $comments_limit) { $browser->set_vertical_scroll_pos($browser->get_page_height() + 100); sleep(3); } else { break; } } $result = ""; // проходим по всем комментариям в цикле и парсим необходимое foreach ($obj->elements as $item) { // опускаемся во вложенные теги пока не найдем нужный $it = $item->get_child_by_attribute("class","style-scope ytd-comment-renderer", true, true); $text = $it->get_inner_text(); $a = explode("\n", $text); $name = "Имя: " . $a[0]; $date = "Дата: " . $a[1]; // количество лайков $cnt = count($a); $votes = "Количество лайков: " . $a[$cnt-2]; // собираем комментарии $comment = "Комментарий: " . $a[2]; for ($j = 3; $j < $cnt-2; $j++) { if ($a[$j] == "Читать дальше") break; $comment .= "\n" . $a[$j]; } $result = $result . $name . "\n" . $date . "\n" . $comment . "\n" . $votes . "\n" . "\n"; } // записываем в итоговый файл file_put_contents("result.csv", $result); debug_mess("скрипт закончил работу");
Результат в виде:
Имя: Маргинал Нищебродов Дата: 3 недели назад Комментарий: Как же Вас не хватает товарищ Коба, хотя бы на полгода в Кремль для зачистки от мразей! Количество лайков: 59 Имя: Two Capitals Дата: 8 месяцев назад (изменено) Комментарий: Сталин, самый результативный правитель Руси 20 века. ( и один из за всю историю ) Сталин принял страну аграрную , а при сдаче гос-во следующему правителю’ передал Индустриальную страну, с ядерным оружуем... при этом же Сталин не торговал нефтью и газом. Нынешняя власть ничтожество, сравнению с личностью Сталина...И это исторический факт... Количество лайков: 124 Имя: Николай Сергеевич Дата: 1 месяц назад Комментарий: Не тем товарищ Сталин грешен, Что врагов России вешал. А грешен он в глазах моих За то что мало вешал их. Количество лайков: 33 и т.д.