#javascript #node.js #web-scraping #puppeteer #webautomation
#javascript #node.js #очистка веб-страниц #кукловод #вебавтоматизация
Вопрос:
Я создаю scraper с помощью puppeteer, и я создал js-скрипт, который хранит некоторые данные в массиве (и когда я использую его в консоли в браузере, он работает)… Но когда я пытаюсь сохранить его в файле JSON с помощью fs.writeFileSync, я получаю ошибку… Этот способ работает в том же скребке, который я создал с помощью nightmare.js . Я предполагаю, что я передаю массив неправильным способом (для puppeteer), и я не уверен, что делать. Проблемный код:
await page.addScriptTag({path: 'script.js'}).then((array) => { fs.writeFileSync('data' i '.json', JSON.stringify(array));
console.log(array); })
Спасибо!
Ответ №1:
addScriptTag
возвращает не результат скрипта, а ElementHandle
представляющий сгенерированный SCRIPT
тег.
Что вы могли бы сделать, это добавить этот тег скрипта, предоставить функцию, а затем вызвать эту функцию с помощью функции evaluate:
await page.addScriptTag({path: 'script.js'});
const array = await page.evaluate(() => someFunction());
await fs.writeFileSync('data' i '.json', JSON.stringify(array);
Комментарии:
1. Большое вам спасибо! Я действительно не мог понять, потому что это отличается от nightmare.. Вы спасаете жизнь!