我正在抓取一个shoutbox,它被限制为10条消息;它是异步的,当第11条消息出现时,第一条消息就消失了。
我设置了一个木偶操纵者,它将结构正确地抓取为数组,并将其转储到mongodb。我想出的最简单的自动化方法是使用watch命令和静态间隔运行脚本。
问题是如何跳过日志中的重复项,项不应该是唯一的,只是不要将相同的项转储两次。也许有一种更好的方法来循环这个过程。attached screenshot
发布于 2018-09-12 04:26:53
您可以在MongoDB中使用db.collection.distinct()从数据库中获取不同的消息:
db.messages.distinct( 'message' );或者,您可以使用db.collection.createIndex()在数据库中创建唯一索引,以便集合不会接受索引键值与索引中现有值匹配的文档的插入或更新:
db.messages.createIndex( { 'message' : 1 }, { 'unique' : true } );在您的Puppeteer脚本中,您可以将page.evaluate()与Set对象结合使用,以便从要抓取的网页中获取不同的消息:
const distinct_messages = await page.evaluate( () => new Set( Array.from( document.querySelectorAll( '.message' ), e => e.textContent ) ) );https://stackoverflow.com/questions/52283150
复制相似问题