СКРИПТ: парсер комментариев с YouTube.com

Сбор и анализ всего что можно собрать из сети.
Ответить
Аватара пользователя
Ivan
Сообщения: 9
Зарегистрирован: 18 дек 2017, 18:53
Откуда: Севастополь
Контактная информация:

СКРИПТ: парсер комментариев с YouTube.com

Сообщение Ivan » 06 ноя 2020, 18:58

Версия программы: Human Emulator Studio 7.0.54.

Браузер: Chromium.

Логика:

1. Переходим по ссылке на видео на Youtube;
2. После перехода на видео загружаются новые комментарии, до достижения лимита и скрипт парсит основные данные (никнейм автора, дата комментария, текст комментария, количество лайков);
3. Все данные складываются в отдельный файл result.csv;

Скрипт состоит:
Запускаемый файл parser_comments_youtube.php. В папке tools в файле functions.php прописаны подключаемые команды.
В файле result.scv записывается информация с результатами сбора.
В папке log хранятся логи работы скрипта. Для каждого дня отдельный файл с логами.

Скачать скрипт:
parser_comments_youtube.rar
(6.02 КБ) 89 скачиваний
Настройки скрипта:
// ссылка на видео
$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

 и т.д.

Ответить