Puppeteer.js - передача массива из .addScriptTag в .then - PullRequest
0 голосов
/ 04 марта 2019

Я делаю скребок, используя puppeteer, и я сделал js-скрипт, который хранит некоторые данные в массиве (и когда я использую их в консоли в браузере, это работает) ... Но когда я пытаюсь сохранить их в файле JSON, используя fs.writeFileSync Я получил ошибку ... Этот способ работает в том же скребке, который я сделал, используя nightmare.js.Я предполагаю, что я передал массив неправильно (для кукловода), и я не уверен, что делать.Код проблемы:

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

Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

addScriptTag не возвращает результат сценария, но ElementHandle представляет сгенерированный тег SCRIPT.

Что вы можете сделать, это добавить этот тег сценария, выставив функцию, а затем вызвать эту функциюиспользуя функцию оценки:

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