首页 > 解决方案 > Cheerio 在 Google Cloud 功能中未按预期工作

问题描述

我有这段代码:

 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. 我检查了这是完全相同的代码,包也有相同的版本。我不确定这里发生了什么。我也试过用axios ...

更奇怪的是,它在具有不同 youtube ID 的两台机器上运行良好:I_izvAbhExY

编辑:

这是我的本地机器(左侧)和云功能机器(右侧)的响应的差异检查:

https://www.diffchecker.com/dKaN5kBx

标签: requestaxioscheerio

解决方案


我在右侧的代码中没有看到任何带有“video-list-item”的类。也许这就是问题所在?

右侧的源代码中缺少网页的某些部分。所以选择器

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

将返回nullundefined


推荐阅读