request - 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
编辑:
这是我的本地机器(左侧)和云功能机器(右侧)的响应的差异检查:
解决方案
我在右侧的代码中没有看到任何带有“video-list-item”的类。也许这就是问题所在?
右侧的源代码中缺少网页的某些部分。所以选择器
$(
".video-list-item.related-list-item.show-video-time.related-list-item-compact-video"
)
将返回null
或undefined
推荐阅读
- java - 从非结构化字符串中提取 JSON 字符串
- python - 如何在 python pandas 中分块读取 sas 文件?
- mongodb - Mongo DB 我尝试添加新字段
- python - 如何使用python在检测到的对象周围绘制一个框?
- javascript - 构建 vue js 文件
- .net - 如何使用 GraphQL for dotnet 处理 GraphQL 查询中的空响应?
- java - 在休眠中测试延迟加载(带有事务的java spring)
- python - 如何让 python 将瑞典字母(åäö)写入 html 文件?
- typescript - 如何在 Jest 和 TypeScript 中处理未处理的拒绝
- php - Symfony / EasyAdmin 无处可去