// ==UserScript==
// @name 小白菜评论下载器(抖音、快手、小红书、B站)
// @namespace http://www.jsjunqiao.com
// @version 0.1
// @description 可以扒取四个平台的昵称和评论内容
// @author 一颗小白菜
// @grant none
// @match *://*.douyin.com/video/*
// @match *://*.xiaohongshu.com/discovery/*
// @match *://*.kuaishou.com/short-video/*
// @match *://*.bilibili.com/video/*
// @require https://cdn.jsdelivr.net/npm/jquery@3.4.1/dist/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/xlsx-core@1.0.3/xlsx.core.min.js
// @require https://greasyfork.org/scripts/449207-xlsxstyle-core-min-js/code/xlsxStylecoreminjs.js?version=1079578
// @require https://greasyfork.org/scripts/449210-xlsxstyle-utils-js/code/xlsxStyleutilsjs.js?version=1079581
// @require https://greasyfork.org/scripts/449211-xlsxexport-utils-js/code/xlsxExportutilsjs.js?version=1079584
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/449213/%E5%B0%8F%E7%99%BD%E8%8F%9C%E8%AF%84%E8%AE%BA%E4%B8%8B%E8%BD%BD%E5%99%A8%EF%BC%88%E6%8A%96%E9%9F%B3%E3%80%81%E5%BF%AB%E6%89%8B%E3%80%81%E5%B0%8F%E7%BA%A2%E4%B9%A6%E3%80%81B%E7%AB%99%EF%BC%89.user.js
// @updateURL https://update.greasyfork.icu/scripts/449213/%E5%B0%8F%E7%99%BD%E8%8F%9C%E8%AF%84%E8%AE%BA%E4%B8%8B%E8%BD%BD%E5%99%A8%EF%BC%88%E6%8A%96%E9%9F%B3%E3%80%81%E5%BF%AB%E6%89%8B%E3%80%81%E5%B0%8F%E7%BA%A2%E4%B9%A6%E3%80%81B%E7%AB%99%EF%BC%89.meta.js
// ==/UserScript==
;(function () {
'use strict'
window.onload = function () {
$('body').append('
下载评论
')
$('#my-download').click(function () {
var target = $('.CDx534Ub')
var table = [['昵称', '评论']]
var env = judgeEnv()
if (env === 'douyin') {
for (var i = 0; i < target.length; i++) {
var CDx534Ub = $('.CDx534Ub').eq(i)
var name = CDx534Ub.find('.YzbzCgxU .AMzEzRWv').eq(0).find('.Uvaas5kD .nEg6zlpW').html()
var comment = CDx534Ub.find('.YzbzCgxU .a9uirtCT').eq(0).find('.Nu66P_ba').html()
table.push([name, comment])
}
} else if (env === 'xiaohongshu') {
var comment = $('.comment')
for (var i = 0; i < comment.length; i++) {
var x_comment = comment.eq(i)
var name = x_comment.find('.comment-info .user-nickname').html()
var content = x_comment.find('.content').eq(0).html()
table.push([name, content])
if (x_comment.find('.reply').length > 0) {
var reply = x_comment.find('.reply')
for (var j = 0; j < reply.length; j++) {
var reply_name = reply.eq(j).find('.replier').html()
var reply_content = reply.eq(j).find('.reply-content').html()
table.push([reply_name, reply_content])
}
}
}
} else if (env === 'kuaishou') {
var comment = $('.comment-item')
for (var i = 0; i < comment.length; i++) {
var x_comment = comment.eq(i)
var name = x_comment.find('.comment-item-body .comment-item-author .router-link .author-name').html()
var content = x_comment.find('.comment-item-body .comment-item-content').html()
table.push([name, content])
if (x_comment.find('.comment-sub-item').length > 0) {
var reply = x_comment.find('.comment-sub-item')
for (var j = 0; j < reply.length; j++) {
var reply_name = reply.eq(j).find('.reply-name').text()
var reply_content = reply.eq(j).find('.comment-item-warp').html()
table.push([reply_name, reply_content])
}
}
}
} else if (env === 'bilibili') {
var comment = $('.reply-item')
for (var i = 0; i < comment.length; i++) {
var x_comment = comment.eq(i)
var name = x_comment.find('.user-info .user-name').html()
var content = x_comment.find('.root-reply .reply-content').html()
table.push([name, content])
if (x_comment.find('.sub-reply-list .sub-reply-item').length > 0) {
var reply = x_comment.find('.sub-reply-list .sub-reply-item')
for (var j = 0; j < reply.length; j++) {
var reply_name = reply.eq(j).find('.sub-user-info .sub-user-name').html()
var reply_content = reply.eq(j).find('.reply-content').html()
table.push([reply_name, reply_content])
}
}
}
}else{
alert('解析出错!')
return false
}
//生成表格
exportExcel(table, env)
})
function exportExcel(data, env) {
for (var i = 0; i < data.length; i++) {
data[i][0] = removeImgTag(data[i][0])
data[i][1] = removeImgTag(data[i][1])
}
XSExport.excelExport(data, env + '评论数据')
}
function judgeEnv() {
var location = window.location.href
if (location.indexOf('douyin') > -1) {
return 'douyin'
} else if (location.indexOf('xiaohongshu') > -1) {
return 'xiaohongshu'
} else if (location.indexOf('kuaishou') > -1) {
return 'kuaishou'
} else if (location.indexOf('bilibili') > -1) {
return 'bilibili'
} else {
return -1
}
}
function removeImgTag( html ) {
var regex1 = /
]*>/gi
var regex2 = /<[^>]*a[^>]*>/gi
var regex3 = /<[^>]*i[^>]>/gi
var regex4 = /<[^>]*span[^>]>/gi
var regex5 = /<[^>]*div[^>]>/gi
var regex6 = //gi
var html = html.replace(regex1, '').replace(regex2, '').replace(regex3, '').replace(regex4, '').replace(regex5, '').replace(regex6, '')
return html
}
}
})()