WPS JS宏+Node.js实战:5分钟搞定B站评论数据抓取(附完整代码)

张开发
2026/4/7 9:47:17 15 分钟阅读

分享文章

WPS JS宏+Node.js实战:5分钟搞定B站评论数据抓取(附完整代码)
WPS JS宏Node.js实战5分钟搞定B站评论数据抓取附完整代码在数据驱动的时代快速获取和分析网络平台上的用户评论数据成为了许多运营、市场和技术爱好者的刚需。B站作为国内领先的视频分享社区其海量的用户评论数据蕴含着丰富的用户反馈和市场洞察。本文将带你通过WPS JS宏与Node.js的巧妙结合实现一套高效、稳定的B站评论数据抓取方案整个过程仅需5分钟即可完成。1. 环境准备与工具选择在开始之前我们需要确保开发环境已经准备就绪。这套方案的核心在于利用WPS Office内置的JS宏功能与Node.js的强大网络请求能力相结合实现数据的抓取和处理。必备工具清单WPS Office 2024及以上版本支持JS宏Node.js 16.x及以上版本文本编辑器如VSCode提示WPS 2024版本已经原生支持JavaScript Fetch API但本文介绍的方案兼容性更好适用于更多场景。安装Node.js非常简单只需从官网下载安装包按照向导完成安装即可。安装完成后可以通过以下命令验证是否安装成功node -v npm -v如果能够正确显示版本号说明安装成功。接下来我们需要创建一个项目文件夹并初始化npmmkdir bilibili-comment-crawler cd bilibili-comment-crawler npm init -y2. 获取B站评论API接口信息要抓取B站评论数据首先需要了解B站的API接口。通过浏览器开发者工具我们可以轻松获取这些信息。操作步骤打开Chrome浏览器访问任意B站视频页面按F12打开开发者工具切换到Network选项卡刷新页面并查看XHR请求找到评论相关的API请求通常包含reply或comment字样关键需要记录的信息包括请求URL请求方法GET/POST请求头信息特别是Cookie请求头示例{ accept: application/json, text/plain, */*, cookie: your_cookie_here, origin: https://www.bilibili.com, referer: https://www.bilibili.com/video/BV1xxxxxx, user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36... }3. Node.js后端服务实现接下来我们创建一个Node.js脚本来处理数据抓取逻辑。这个脚本将接收来自WPS JS宏的请求参数获取B站评论数据并保存为CSV文件。首先安装必要的依赖npm install exceljs axios然后创建bilibili_crawler.js文件const fs require(fs); const path require(path); const ExcelJS require(exceljs); const axios require(axios); // 从命令行参数获取配置 const args process.argv.slice(2); const config JSON.parse(args[0]); async function fetchComments() { try { const response await axios({ method: config.method || GET, url: config.url, headers: config.headers }); const comments response.data.data.replies || []; const workbook new ExcelJS.Workbook(); const worksheet workbook.addWorksheet(B站评论); // 添加表头 worksheet.addRow([用户昵称, 用户头像, 评论内容, 点赞数, 发布时间]); // 添加数据行 comments.forEach(comment { worksheet.addRow([ comment.member.uname, comment.member.avatar, comment.content.message, comment.like, new Date(comment.ctime * 1000).toLocaleString() ]); }); // 保存文件 await workbook.csv.writeFile(config.filePath); console.log(数据抓取成功已保存至 config.filePath); } catch (error) { console.error(抓取数据失败, error.message); } } fetchComments();4. WPS JS宏前端调用现在我们将在WPS中创建一个JS宏来调用这个Node.js脚本。WPS JS宏提供了Shell函数可以执行系统命令。完整WPS JS宏代码function fetchBilibiliComments() { // 配置请求参数 const config { url: https://api.bilibili.com/x/v2/reply/main, // B站评论API method: GET, filePath: D:/bilibili_comments.csv, // 保存路径 headers: { accept: application/json, text/plain, */*, cookie: your_cookie_here, // 替换为你的Cookie referer: https://www.bilibili.com/video/BV1xxxxxx, // 替换为视频BV号 user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36... } }; // 处理参数中的双引号转义 let args JSON.stringify(config); args args.replace(//g, \\); // Node.js脚本路径根据实际路径修改 const nodeScriptPath C:/path/to/your/bilibili_crawler.js; // 构建执行命令 const command node ${nodeScriptPath} ${args}; // 执行命令 Shell(cmd /c ${command}, jsNormalNoFocus); // 提示用户 Alert(数据抓取任务已启动请稍后查看结果文件); }5. 数据优化与高级功能基础功能实现后我们可以进一步优化和扩展这个工具的功能。数据分页处理B站的评论数据通常是分页加载的我们可以修改Node.js脚本来获取多页数据async function fetchAllComments() { let allComments []; let page 1; let hasMore true; while (hasMore) { try { const response await axios({ method: GET, url: ${config.url}?pn${page}, headers: config.headers }); const comments response.data.data.replies || []; if (comments.length 0) { hasMore false; } else { allComments allComments.concat(comments); page; // 避免请求过于频繁 await new Promise(resolve setTimeout(resolve, 1000)); } } catch (error) { console.error(获取第${page}页数据失败, error.message); hasMore false; } } return allComments; }数据清洗与格式化在保存数据前我们可以对评论内容进行清洗去除HTML标签和特殊字符function cleanContent(text) { return text .replace(/[^]/g, ) // 去除HTML标签 .replace(/\s/g, ) // 合并多个空格 .trim(); }定时自动抓取通过WPS JS宏的定时任务功能可以实现定期自动抓取数据function scheduleFetch() { // 每10分钟执行一次 setInterval(fetchBilibiliComments, 10 * 60 * 1000); }6. 安全与最佳实践在使用这类数据抓取工具时需要注意以下几点遵守网站规则不要频繁请求避免给服务器造成过大压力数据使用规范抓取的数据仅用于个人学习和分析不得用于商业用途Cookie安全不要将包含个人认证信息的代码分享给他人推荐的请求间隔// 在每次请求之间添加延迟 const delay ms new Promise(resolve setTimeout(resolve, ms)); async function fetchWithDelay() { await fetchData(); await delay(2000); // 2秒延迟 }通过本文介绍的方法你可以快速搭建一个高效的B站评论数据抓取工具。这套方案的优势在于利用WPS的广泛普及性无需复杂环境Node.js强大的网络请求能力确保数据获取稳定ExcelJS库提供了灵活的数据导出选项整个流程自动化节省大量手动操作时间

更多文章