【发布时间】:2021-02-28 17:21:39
【问题描述】:
我想要做的是在 NodeJs 上构建一个 scraping 应用程序,它可以从中监控实时聊天并将某些消息存储在任何数据库中?
我想做的是以下,我想从聊天平台流媒体中捕获数据,从而捕获一些有用的信息,以帮助那些正在做流媒体服务的人;
但我不知道如何开始使用 NodeJs,
到目前为止,我能够做的是捕获消息的数据,但是我无法实时监控新消息, 有这方面的帮助吗?
到目前为止我做了什么:
server.js
var express = require('express');
var fs = require('fs');
var request = require('request');
var puppeteer = require('puppeteer');
var app = express();
app.get('/', function(req, res){
url = 'https://www.nimo.tv/live/6035521326';
(async() => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
await page.waitForSelector('.msg-nickname');
const messages = await page.evaluate(() => {
return Array.from(document.querySelectorAll('.msg-nickname'))
.map(item => item.innerText);
});
console.log(messages);
})();
res.send('Check your console!')
});
app.listen('8081')
console.log('Magic happens on port 8081');
exports = module.exports = app;
有了这个,我得到用户的昵称消息并放入一个数组中,我想让我的应用程序运行并在聊天中输入完成时自动接收新的昵称, 对这个挑战有什么帮助吗?
也许我需要使用 WebSocket
【问题讨论】:
-
应用聊天必须通过 NodeJS api 才能捕获它
-
如果您要自动化 chrome,那么您可能必须在插入感兴趣文本的 DOM 上设置事件侦听器(然后设置从 puppeteer 到节点的基于事件的侦听器)或猴子补丁代码到他们的前端库代码中(并做同样的事情)。最好的解决方案是放弃 puppeteer 并使用他们的 API 来监听事件挂钩或广播消息的基于事件的套接字 API。
标签: node.js firebase puppeteer