Cheerio не работает должным образом в функции Google Cloud - PullRequest
2 голосов
/ 20 февраля 2020

У меня есть этот кусок кода:

 const response = await request.get(
    `https://www.youtube.com/watch?v=yURRmWtbTbo&sp=EgIQAQ%253D%253D`
  );
  const $ = cheerio.load(response, {
    decodeEntities: false
  });
  console.log(
      $(
        ".video-list-item.related-list-item.show-video-time.related-list-item-compact-video"
      ).html()
  );

Он отлично работает на моей локальной машине, но если я выполню этот код в облачной функции, он вернет null. Я проверил, что это точно такой же код, пакеты также имеют ту же версию. Я не уверен, что здесь происходит. Я также попробовал с топором ios ...

Что еще более странно, это то, что он хорошо работает на обеих машинах с другим идентификатором YouTube: I_izvAbhExY

РЕДАКТИРОВАТЬ:

Вот проверка различий ответа от моего локального компьютера (слева) и от облачной функциональной машины (справа):

https://www.diffchecker.com/dKaN5kBx

1 Ответ

0 голосов
/ 10 марта 2020

Я не вижу ни одного класса с "video-list-item" в коде справа. Может быть, в этом проблема?

Некоторые части веб-страницы отсутствуют в исходном коде справа. Таким образом, селектор

$(
    ".video-list-item.related-list-item.show-video-time.related-list-item-compact-video"
  )

вернет null или undefined

...