【问题标题】:How to determine the mean duration of YouTube videos for specific search term?如何确定特定搜索词的 YouTube 视频的平均时长?
【发布时间】:2016-02-17 14:04:31
【问题描述】:
我知道 YouTube 非常封闭,不发布任何详细的统计数据,但我对找出任意 How-To 视频的长度有特别的研究兴趣。
当我搜索那个词时,我会得到几百万个结果。是否可以确定部分搜索结果的播放持续时间?由于 YouTube API 的使用是有限的,因此人们每天可以抓取几个视频,并且可能使用多个 API 密钥。
除了使用 API 之外,我还可以使用强大的抓取工具。
【问题讨论】:
标签:
youtube
web-scraping
youtube-api
youtube-data-api
【解决方案1】:
JS 浏览器实用程序
我向您推荐一个简单的 JS 实用程序,以便在浏览器开发工具中使用。阅读here 如何使用它进行计数。我已经对其进行了修改以计算视频时长。
JavaScript 代码
所以打开一个 youtube 搜索页面并打开浏览器的开发工具(在 PC 上是 F12,首选项 -> 高级 -> 在 Mac 上显示开发菜单)。打开后,转到控制台(控制台选项卡)并输入以下代码:
function domCounter(selector){
var a = document.querySelectorAll(selector);
var hour = 0, min = 0;
for(var i=0; i<a.length;i++){
var time = a[i].innerHTML.split(':');
// console.log(time);
hour += parseInt(time[0]);
min += parseInt(time[1]);
}
return hour + Math.round(min/60);
}
如何找到css选择器
所以要在你刚刚点击的浏览器控制台中调用它:
domCounter('span.video-time')
免责声明
此实用程序适用于一个搜索页面结果。您可能会改进它以遍历分页。
【讨论】:
-
请谨慎链接到您自己在不同网站上的内容,您不想成为spammer。您应该在此处包含大部分内容,并且仅将链接用作参考。
-
【解决方案2】:
如果不查看每个视频的时长,您将无法获取从搜索端点返回的时长视频。
但是,搜索端点确实提供了 videoDuration 参数,您可以将其传递给您的请求以仅返回特定持续时间范围的视频:
videoDuration 参数根据以下条件过滤视频搜索结果
他们的持续时间。如果为此参数指定值,则必须
还将 type 参数的值设置为 video。
可接受的值为:
-
any – 不要根据视频搜索结果的时长过滤视频搜索结果。这是默认值。
-
long – 仅包含超过 20 分钟的视频。中 - 仅包括时长在 4 到 20 分钟(含)之间的视频。
-
short – 仅包含时长少于四分钟的视频。