首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Puppeteer: Shoutbox/MessageBoard日志记录

Puppeteer: Shoutbox/MessageBoard日志记录
EN

Stack Overflow用户
提问于 2018-09-12 03:42:12
回答 1查看 57关注 0票数 0

我正在抓取一个shoutbox,它被限制为10条消息;它是异步的,当第11条消息出现时,第一条消息就消失了。

我设置了一个木偶操纵者,它将结构正确地抓取为数组,并将其转储到mongodb。我想出的最简单的自动化方法是使用watch命令和静态间隔运行脚本。

问题是如何跳过日志中的重复项,项不应该是唯一的,只是不要将相同的项转储两次。也许有一种更好的方法来循环这个过程。attached screenshot

EN

回答 1

Stack Overflow用户

发布于 2018-09-12 04:26:53

您可以在MongoDB中使用db.collection.distinct()从数据库中获取不同的消息:

代码语言:javascript
复制
db.messages.distinct( 'message' );

或者,您可以使用db.collection.createIndex()在数据库中创建唯一索引,以便集合不会接受索引键值与索引中现有值匹配的文档的插入或更新:

代码语言:javascript
复制
db.messages.createIndex( { 'message' : 1 }, { 'unique' : true } );

在您的Puppeteer脚本中,您可以将page.evaluate()Set对象结合使用,以便从要抓取的网页中获取不同的消息:

代码语言:javascript
复制
const distinct_messages = await page.evaluate( () => new Set( Array.from( document.querySelectorAll( '.message' ), e => e.textContent ) ) );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52283150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档