Puppeteer.js-从.addScriptTag传递到.then

时间:2019-03-04 19:04:09

标签: web-scraping puppeteer fs

我正在使用puppeteer制作scraper,并且我制作了js脚本,该脚本将一些数据存储在数组中(并且当我在浏览器的控制台中使用它时,它可以工作)...但是当我尝试使用fs将其存储在JSON文件中时。 writeFileSync我出错了...这种方式在我使用nightmare.js制作的同一刮板中有效。 我以为我以错误的方式传递了数组(对于操纵up),并且我不确定该怎么做。 有问题的代码:

await page.addScriptTag({path: 'script.js'}).then((array) => {  fs.writeFileSync('data'+i+'.json', JSON.stringify(array));
  console.log(array); })

谢谢!

1 个答案:

答案 0 :(得分:1)

addScriptTag不返回脚本结果,而是ElementHandle代表生成的SCRIPT标签。

您可以做的是添加该脚本标记,公开一个函数,然后使用评估函数调用该函数:

await page.addScriptTag({path: 'script.js'});
const array = await page.evaluate(() => someFunction());
await fs.writeFileSync('data'+i+'.json', JSON.stringify(array);