有浏览器就行,无需爬虫,无需安装其他任何软件或者插件。
在任意b站直播间,打开浏览器开发者工具(推荐使用chrome,对应开发者工具为DevTools),切换到控制台(console)面板即可。
作为一个b站未签约小透明游戏主播,最近想在直播间里搞搞抽奖。
刚好会一点jquery,所以想直接在直播间所在网页进行信息提取,然后随机抽取。
1, 从弹幕中随机抽出
js 代码如下
var danmus = $(".chat-history-list .chat-items .chat-item.danmaku-item ")
var danmu_list = [];
for(let i = 0; i< danmus.length; i ++) {
danmu_list.push({uid: $(danmus[i]).data("uid"),
name: $(danmus[i]).data("uname"),
text: $(danmus[i]).data("danmaku")})
}
var index = Math.floor((Math.random() * danmu_list.length))
console.log(danmu_list[index])
复制到console下回车就可。
输出格式,示例如下:
{uid: 149259132, name: "大爽歌", text: "测试2"}
2, 从发弹幕的用户中随机抽出
但是从弹幕中随机抽取有个问题,就是弹幕发的多的人,获奖概率大。
如果希望每个发送弹幕的人抽奖概率一样,则要进行去重,代码如下:
var danmus = $(".chat-history-list .chat-items .chat-item.danmaku-item ")
var danmu_dict = {};
for(let i = 0; i< danmus.length; i ++) {
var dm = {
uid: $(danmus[i]).data("uid"),
name: $(danmus[i]).data("uname"),
text: $(danmus[i]).data("danmaku"),
}
if(!(dm.uid in danmu_dict)){
danmu_dict[dm.uid] = dm
}
}
var danmu_list = Object.values(danmu_dict)
var index = Math.floor((Math.random() * danmu_list.length))
console.log(danmu_list[index])
复制到console下回车就可。
输出格式同1, 示例如下:
{uid: 149259132, name: "大爽歌", text: "测试2"}