B站评论区抽奖

打开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)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值