Я получаю UnhandledPromiseRejectionWarning: необработанное отклонение обещания при выполнении простого поиска в сети с кукловодом, я использовал точно такой же код в других проектах, и он работал, я не знаю, почему он не работает сейчас. Полная ошибка следующей строки:
node .\scrapers.js
(node:9748) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'getProperty' of undefined
at scrapeChannel (C:\Users\João Teixeira\OneDrive\code\learning\js\webscrapingapp\server\scrapers.js:10:27)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:9748) UnhandledPromiseRejectionWarning: Unhandled promise rejection
. Эта ошибка возникла либо в результате выброса внутри асинхронной функции c без блока catch, либо в результате отклонения обещания, которое не было обработано с помощью .catch (). Чтобы завершить процесс узла при отклонении необработанного обещания, используйте флаг CLI --unhandled-rejections=strict
(см. https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (id отклонения: 1)
(node:9748) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated.
В будущем отклонения обещания, которые не обрабатываются, завершат процесс Node.js с ненулевым кодом выхода.
Вот код:
const puppeteer = require('puppeteer')
async function scrapeChannel(url) {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto(url);
const [el] = await page.$x('//*[@id="text"]');
const text = await el.getProperty('textContent');
const name = await text.jsonValue();
const [el2] = await page.$x('//*[@id="img"]');
const src = await el2.getProperty('src');
const avatarURL = await src.jsonValue();
console.log({name, avatarURL})
browser.close();
return {name, avatarURL}
}
scrapeChannel('https://www.youtube.com/user/Microsoft');