此插件用于获取B站up主投稿列表数据,附带导出Excel网站 进入up主投稿视频列表后,首先选择右侧列表展示(不支持方块展示)。 此时,页面“TA的视频”标题处将出现“开始统计”按钮,点击后将从当前页开始统计数据。 期间请保持网络状态稳定,切勿操作当前页面(不影响其他窗口页面操作)。 一页数据大概耗时1秒(过于频繁会被封ip),根据总页数自行判断所需时间。 待数据统计完毕后,“开始统计”按钮后会出现 文本输入域(内含所有统计数据) 和 导出Excel的跳转按钮。 首选选中复制文本输入域内所有文字,然后点击“导出Excel”跳转按钮。 在新开页面右侧,粘贴复制的统计数据,页面下方即出现下载按钮。
// ==UserScript==
// @name B站获取up主投稿数据
// @namespace http://tampermonkey.net/
// @version 1.2
// @description 此插件用于获取B站up主投稿列表数据,附带导出Excel网站 进入up主投稿视频列表后,首先选择右侧列表展示(不支持方块展示)。 此时,页面“TA的视频”标题处将出现“开始统计”按钮,点击后将从当前页开始统计数据。 期间请保持网络状态稳定,切勿操作当前页面(不影响其他窗口页面操作)。 一页数据大概耗时1秒(过于频繁会被封ip),根据总页数自行判断所需时间。 待数据统计完毕后,“开始统计”按钮后会出现 文本输入域(内含所有统计数据) 和 导出Excel的跳转按钮。 首选选中复制文本输入域内所有文字,然后点击“导出Excel”跳转按钮。 在新开页面右侧,粘贴复制的统计数据,页面下方即出现下载按钮。
// @author You
// @include https://space.bilibili.com/*
// @icon https://space.bilibili.com/favicon.ico
// @grant none
// @require http://code.jquery.com/jquery-1.11.0.min.js
// @license MIT
// ==/UserScript==
(function() {
'use strict';
setTimeout(() => {
let videoList = []
let totalPage = 0
let nowPage = 0
$('.page-head__left').append(`<button id="startCalc">开始统计</button>`)
$(document).on('click', '#startCalc', function() {
if ($('.be-pager-item-active').attr('title').split(':')[0] === '最后一页') {
nowPage = parseInt($('.be-pager-item-active').attr('title').split(':')[1])
} else {
nowPage = parseInt($('.be-pager-item-active').attr('title'))
}
totalPage = parseInt($('.be-pager-total').text().split('共 ')[1].split(' 页,')[0])
startCalc()
})
$(document).on('click', '#checkResult', function() {
$('.page-head__left').append(`<textarea id="dataText" value="" type="text"></textarea><a href="https://data.page/json/csv" target="blank">导出Excel</a>`)
$('#dataText').val(JSON.stringify(videoList))
})
function startCalc() {
console.log(nowPage)
if (nowPage > totalPage) {
$('.page-head__left').append(`<textarea id="dataText" value="" type="text" readonly></textarea><a href="https://data.page/json/csv" target="blank">导出Excel</a>`)
$('#dataText').val(JSON.stringify(videoList))
return
}
for (let i = 0; i < $('.list-list').children('.list-item').length; i++) {
const element = $('.list-list').children('.list-item').eq(i)
let title = element.children('.c').children('.title-row').children('.title').attr('title')
let href = element.children('.c').children('.title-row').children('.title').attr('href')
let desc = element.children('.c').children('.desc').attr('title')
let play = element.children('.c').children('.meta').children('.play').text().split('\n')[0]
let bulletComments = element.children('.c').children('.meta').children('.comments').text().split('\n')[0]
videoList.push({
title: title,
href: href,
desc: desc,
play: play,
bulletComments: bulletComments
})
}
// loopCheck()
$('.be-pager-next').click()
nowPage++
console.log(videoList)
setTimeout(() => {
startCalc()
}, 1000)
}
}, 2000)
})();