Прежде всего, вы упускаете апостроф в вашей функции page.$$()
.Вы должны изменить это на:
const tds = await page.$$( 'td' );
Далее, вы пытаетесь передать несуществующую переменную в page.evaluate()
.Вы можете исправить это, передав tds[i]
вместо td
:
const tdcontent = await page.evaluate( td => td.innerText, tds[i] );
Ваш конечный результат должен выглядеть примерно так:
const go = async () =>
{
try
{
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto( 'www.webpage.com' );
const tds = await page.$$( 'td' );
const data = [];
for ( let i = 0; i < tds.length; i++ )
{
const tdcontent = await page.evaluate( td => td.innerText, tds[i] );
if ( tdcontent.length > 5 )
{
data[i] = { content : tdcontent };
}
}
return data;
}
catch ( e )
{
console.log( e );
}
};
( async function main ()
{
const returnedData = await go();
console.log( returnedData.length );
})();
Если у вас по-прежнему возникают проблемы,Вы можете дождаться полной загрузки страницы, используя page.goto( ... , { waitUntil : 'networkidle0' })
, или дождаться, пока соответствующий элемент будет добавлен в DOM, используя page.waitForSelector()
:
await page.goto( 'www.webpage.com' , { waitUntil : 'networkidle0' });
...
await page.waitForSelector( 'td' );