我不明白如何在page.evaluate中使用模块,我也在SO How to pass required module object to puppeteer page.evaluate SO上找到了此帖子
但是我不知道如何使用它,
await page.addScriptTag({ path: './node_modules/fs.realpath/index.js'});
我得到了:
错误:评估失败:类型错误:fs.appendFileSync不是函数
const fs = require('fs');
page.evaluate(()=>{
let elements = document.querySelectorAll("a.myclass.vid");
elements.forEach((element, index) => {
fs.appendFileSync("textresult.txt", element.textContent+"\r\n");
})
});
感谢您的阐述:o)
答案 0 :(得分:0)
您传递给page.evaluate()的匿名函数在运行puppeteer的网页的上下文中运行,因此,它当然不知道fs
是什么。您需要从该匿名函数返回一些信息,然后使用以下命令调用fs.appendFileSync
:
const texts = await page.evaluate(() => {
return document.querySelectorAll('a.myclass.vid').map((el) => {
return el.textContent + "\r\n"
})
})
fs.appendFileSync('textresult.txt', texts)