我想用puppeteer爬取搜索引擎某些关键词的搜索结果数量,一共有几千个关键词,如何才能控制住一次性打开的网页不要太多。。。

kingvieri
  • 67

第一次玩puppeteer,写个for循环就把page扔进去了,发现一下子就开了4000个promise???
这种情况该怎么处理啊。。。。求助

回复
阅读 362
3 个回答

搞个数组,每次做完一个在做另一个。或者说你可以让他最多同时执行5个,类似于连接池这种概念。

先申请连接,然后再去处理。处理完了取一个新的执行。有新任务就放入队列中,然后判断一下有空闲连接吗,有就执行,没有就在队列中等待。

然后这个数据是本地的嘛,重启就没了。你可以放在服务端,然后用接口操作咯。

不要把 browser.newPage()放进循环里,page应该是创建后复用,如果你每次创建一个page,那就需要用完page就应该关闭page.close(),否则内存肯定要炸

p-limit 之类的 npm 包可以很方便的实现控制异步并发,自己实现也不复杂。

你知道吗?

宣传栏