打开B站某个视频页面,鼠标右击打开开发者模式。
在控制台输入以下代码。
1.适用于网页端旧版
旧版中还用到Jquery,但新版已经淘汰了。
此方法的缺点:如果不向下滑动,那么页面中的dom元素就不会增加,所以,只会获取当前页的用户名。
$(function(){
let array = new Set()
//var array = new Array();
$(".user .name").each((index,item)=>{
console.log(index+"==>"+$(item).text());
//array.push($(item).text())
array.add($(item).text())
})
console.log('==================');
console.log(array)
console.log('==================');
var num = Math.round(Math.random()*array.size);
console.log(num)
//let luckyman = array.get(num);
//将set集合转为数组,并获取下标
let luckyman = Array.from(array)[num];
console.log("luckyman = "+luckyman);
})
2.适用于网页端新版
console.log("程序开始运行");
console.log("定义集合存储数据");
let name_set = new Set();
let id_set = new Set();
console.log("开始载入数据");
// 循环变量
var my_loop;
// 下滑延时 800毫秒 网速/加载速度较慢的朋友们最好放慢速度 提高准确性
var r_time = 800;
// 评论数
var comment_num = 1;
if(document.getElementsByClassName("total-reply")[0].innerText.indexOf("万") != -1)
{
comment_num = 10000 * (parseInt(document.getElementsByClassName("total-reply")[0].innerText) + 1);
}
else
{
comment_num = parseInt(document.getElementsByClassName("total-reply")[0].innerText);
}
// 下滑
function r()
{
setTimeout(() => {
window.scroll(0, 1);
}, 1000);
window.scroll(0, 1920*comment_num);
// 没有评论后自动停止下滑 并 抽奖
if(document.getElementsByClassName("reply-end")[0])
{
// 停止下滑循环
stop_r();
// 抽奖函数
draw();
}
}
// 停止下滑循环
function stop_r()
{
clearInterval(my_loop);
}
// 抽奖函数
function draw()
{
// 循环次数
var len = document.getElementsByClassName("user-name").length;
for(var i=0; i<len; i++)
{
var name = document.getElementsByClassName("user-name")[i].innerText;
var id = document.getElementsByClassName("user-name")[i].getAttributeNode("data-user-id").value;
// console.log(name+",加入集合");
name_set.add(name);
id_set.add(id);
}
console.log("全部数据加载完毕");
console.log("总共"+name_set.size+"名用户");
// 这就是注释
//return false;
}
// 获取幸运儿
function go(num)
{
for(var i=0; i<num; i++)
{
// 生成随机数,直接打印中奖者信息
var lucky_num = parseInt(Math.random()*(name_set.size), 10);
console.log(" ");
console.log("中奖用户ID为:"+Array.from(id_set)[lucky_num]);
console.log("中奖用户名为:"+Array.from(name_set)[lucky_num]);
console.log(" ");
}
}
// 开始自动下滑 r_time毫秒一次
my_loop = setInterval(r, r_time);
// 全部数据加载完毕后,使用 go(中奖人数) 抽取中奖者
go(1)