Не находит html элемент (cheerio)

Вообщем, хочу получить элемент по классу, но постоянно возвращает null или undefined. Хотя некоторые элементы jquery все-таки находит, не понимаю в чем проблема, просто что-то оно находит, а что-то нет. Хотя код тот же самый, меняю название селектора и все, jquery уже не может найти этот элемент.

const rp = require("request-promise");
const $ = require("cheerio");

const url = "https://www.youtube.com/watch?v=j3hyB5rO_cM";

rp(url)
  .then(function (html) {
    console.log($("#player", html).attr("class")); // возвращает skeleton flexy
    console.log($(".skeleton.flexy", html).attr("id")); // возвращает player
    console.log($("#img", html).attr("class")); // возвращает undefined
    console.log($(".html5-video-container").html());// возвращает null
  })
  .catch(function (err) {
    //handle error
  });

введите сюда описание изображения

введите сюда описание изображения введите сюда описание изображения


Ответы (1 шт):

Автор решения: Vasily

Ваши селекторы возвращают Вам не единственный элемент, а коллекцию.

Что бы получить доступ до свойств конкретного элемента:

$(".html5-video-container").eq(0).html()
// метод .eq(0) возврашает элемент массива с нулевым индексом

Что бы получить свойство/HTML для каждого из элементов коллекции:

$(".html5-video-container").forEach(el => console.log(el.innerHTML))

Если описанное Выше не помогло, то проверьте что Вы получаете в консоли:

console.log($(".html5-video-container"))
→ Ссылка