高效获取B站关注或粉丝的详细信息 | 您所在的位置:网站首页 › 怎么查看粉丝数据 › 高效获取B站关注或粉丝的详细信息 |
使用JavaScript语言配合开发者工具获取B站关注或粉丝的详细信息 说明:需要在浏览器登录自己的B站账号,才能获取到自己关注或粉丝的完整的信息,否则以访客的身份只能获取到前五页用户的信息,而且会出现代码一直循环获取第五页用户数据的情况! 使用方法1.打开B站个人空间的关注或粉丝列表关注:https://space.bilibili.com/用户ID/fans/follow粉丝:https://space.bilibili.com/用户ID/fans/fans 2.打开开发者工具(F12)选择Console,将以下的代码粘贴至Console(如下图所示)并回车 在获取数据的这段时间里,可以新建一个Excel待用,等待出现“已完成”即完成获取 代码如下 console.log(` 序号 ID 昵称 性别 生日 等级 签名 公告 标签 头像 会员 认证 直播间ID 直播间标题 直播间封面 头像挂件ID 头像挂件名称 头像挂件链接 徽章ID 徽章名称 徽章链接 背景图片 订阅数量 收藏夹数量 关注数 粉丝数 获赞量 播放量 阅读量 充电总人数 关注时间戳(s) 截止时间戳(ms) `) // 列表全部字段 let allUp = [], pageIndex = 1,num = 0,putData = () => { let onePage = []; $('.cover').each((i, item) => { let data0 = {name: $('.fans-name')[i].innerHTML,id: item.pathname.replace(/\//g, '')} // ID用户名 let data1 = $.ajax({url: `https://api.bilibili.com/x/space/acc/info?mid=${data0.id}&jsonp=jsonp` ,async: false,xhrFields: {withCredentials: true}}) // 个人信息 let data2 = $.ajax({url: `https://api.bilibili.com/x/relation?fid=${data0.id}&jsonp=jsonp&callback` ,async: false,xhrFields: {withCredentials: true}}) // 关注时间戳 let data3 = $.ajax({url: `https://api.bilibili.com/x/relation/stat?vmid=${data0.id}&jsonp=jsonp` ,async: false,xhrFields: {withCredentials: true}}) // 关注粉丝数 let data4 = $.ajax({url: `https://api.bilibili.com/x/space/upstat?mid=${data0.id}&jsonp=jsonp` ,async: false,xhrFields: {withCredentials: true}}) // 播放获赞阅读 let data5 = $.ajax({url: `https://api.bilibili.com/x/space/bangumi/follow/list?vmid=${data0.id}&type=1&jsonp=jsonp` ,async: false,xhrFields: {withCredentials: true}}) // 订阅数量 let data6 = $.ajax({url: `https://api.bilibili.com/x/v3/fav/folder/created/list?pn=1&ps=10&up_mid=${data0.id}&jsonp=jsonp` ,async: false,xhrFields: {withCredentials: true}}) // 收藏夹 let data7 = $.ajax({url: `https://api.bilibili.com/x/ugcpay-rank/elec/month/up?up_mid=${data0.id}` ,async: false,xhrFields: {withCredentials: true}}) // 充电总人数 let data8 = $.ajax({url: `https://api.bilibili.com/x/space/notice?mid=${data0.id}&jsonp=jsonp` ,async: false,xhrFields: {withCredentials: true}}) // 公告 let data9 = $.ajax({url: `https://api.bilibili.com/x/space/acc/tags?mid=${data0.id}&jsonp=jsonp` ,async: false,xhrFields: {withCredentials: true}}) // 标签 user00 = JSON.parse(data1.responseText).data.sex; // 性别 user01 = JSON.parse(data1.responseText).data.birthday; // 生日 user02 = JSON.parse(data1.responseText).data.level; // 等级 user03 = JSON.parse(data1.responseText).data.sign.replace(/[\r\n]/g, " "); // 签名 user04 = JSON.parse(data8.responseText).data.replace(/[\r\n]/g, " "); // 公告 user05 = JSON.parse(data9.responseText).data[0].tags; // 标签 user06 = JSON.parse(data1.responseText).data.face; // 头像 user07 = JSON.parse(data1.responseText).data.vip.label.text; // 会员 user08 = JSON.parse(data1.responseText).data.official.title; // 认证 user09 = JSON.parse(data1.responseText).data.live_room.roomid; // 直播间ID user10 = JSON.parse(data1.responseText).data.live_room.title; // 直播间标题 user11 = JSON.parse(data1.responseText).data.live_room.cover; // 直播间封面 user12 = JSON.parse(data1.responseText).data.pendant.pid; // 头像挂件ID user13 = JSON.parse(data1.responseText).data.pendant.name; // 头像挂件名称 user14 = JSON.parse(data1.responseText).data.pendant.image; // 头像挂件链接 user15 = JSON.parse(data1.responseText).data.nameplate.nid; // 徽章ID user16 = JSON.parse(data1.responseText).data.nameplate.name; // 徽章名称 user17 = JSON.parse(data1.responseText).data.nameplate.image // 徽章链接 user18 = JSON.parse(data1.responseText).data.top_photo; // 背景图片 if (JSON.parse(data5.responseText).message == "用户隐私设置未公开") { user19 = "用户隐私设置未公开" } else { user19 = JSON.parse(data5.responseText).data.total; } // 订阅数量 if (JSON.parse(data6.responseText).data == null) { user20 = "null" } else { user20 = JSON.parse(data6.responseText).data.count; } // 收藏夹数量 user21 = JSON.parse(data3.responseText).data.following; // 关注数 user22 = JSON.parse(data3.responseText).data.follower; // 粉丝数 user23 = JSON.parse(data4.responseText).data.likes; // 获赞量 user24 = JSON.parse(data4.responseText).data.archive.view; // 播放量 user25 = JSON.parse(data4.responseText).data.article.view; // 阅读量 if (JSON.parse(data7.responseText).message != "") { user26 = "up主未开通充电" } else { user26 = JSON.parse(data7.responseText).data.total_count; } // 充电总人数 user27 = JSON.parse(data2.responseText).data.mtime; // 关注时间戳(s) user28 = new Date().getTime() // 截止时间戳(ms) num++ // num+1 onePage.push(data0); // 将data0对象添加到onePage数组里 console.log(` ${num} ${data0.id} ${data0.name} ${user00} ${user01} ${user02} ${user03} ${user04} ${user05} ${user06} ${user07} ${user08} ${user09} ${user10} ${user11} ${user12} ${user13} ${user14} ${user15} ${user16} ${user17} ${user18} ${user19} ${user20} ${user21} ${user22} ${user23} ${user24} ${user25} ${user26} ${user27} ${user28} `) if (i === $('.cover').length - 1) { allUp.push(onePage); if ($('.be-pager-next')[0].classList.length === 1) { pageIndex++; $('.be-pager-next').click(); setTimeout(() => {putData();}, 100) } else {console.log('已完成');}} })} putData(); 3.完成获取之后,全选Console中的字符,打开新建的Excel,粘贴至其中,稍微整理一下即可 全选小技巧:如果不能直接Ctrl+A,就选中数据中的几个字符,再按Ctrl+A即可全选 4.粘贴至Excel的A1后,如果数值显示有问题,将数据类型改为文本即可,删除57-65行的代码部分,再删除1-55行的代码部分,再删除列A,在序号20和21之间有空行可以删除 现在就完成了数据的获取 参考文章此代码为参考B站up:冬灰条投稿的“B站关注列表按粉丝数排序文案及源码”进行修改 由好大一蠢龙发布,且仅发布在B站与CSDN(Dragon65535) |
CopyRight 2018-2019 实验室设备网 版权所有 |