我执行了以下操作,它似乎收集了大量链接,但是使用collectLinks1
对站点进行实际检查时,我得到了所有有效链接,但是使用collectLinks2
我得到了{ {1}}
我是Puppeteer的新手,我找不到使用http://pieroxy.net/blog/2014/11/18/[
的原因,我找不到链接。
collectLinks2
答案 0 :(得分:0)
您需要await
通过page.exposeFunction
定义的函数返回Promise。由于您仅在调用函数而未在等待结果,因此page.evaluate
调用将在脚本执行完毕之前解决。
解决方案
您应该使用循环而不是forEach
遍历所有项目,并将它们依次传递到页面。
async function collectLinks2(htmlPage) {
// ...
await htmlPage.evaluate(async () => {
async function findLinks(document) {
for (const link of document.querySelectorAll('a[href]')) {
await window.pushToLinks(link.href);
}
}
await findLinks(window.document);
});
return links;
}