Загрузить динамический контент с кукловодом? - PullRequest
0 голосов
/ 22 сентября 2018

Я использую этот код для получения данных страницы.Это работает, но я получаю данные только один раз.Проблема в том, что эти данные обновляются, скажем, каждую секунду.Я хочу получить это без перезагрузки страницы.Это простой пример того, что я хочу - http://novinite.win/clock.php Есть ли способ обновить результат без перезагрузки веб-страницы?

const puppeteer = require('puppeteer');

(async () => {
  const url = process.argv[2];
  const browser = await puppeteer.launch({
     args: ['--no-sandbox']
  })

  const page = await browser.newPage();
  page.on('request', (request) => {
    console.log(`Intercepting: ${request.method} ${request.url}`);
    request.continue();
  });
  await page.goto(url, {waitUntil: 'load'});
  const html = await page.content();
  console.log(html);

  browser.close();
})();

1 Ответ

0 голосов
/ 23 сентября 2018

Вы можете await a Promise, который регистрирует текущий textContent каждые 1000 мс (1 секунда) с помощью setInterval и разрешаются после заданного количества интервалов (например, 10 интервалы):

'use strict';

const puppeteer = require( 'puppeteer' );

( async () =>
{
    const browser = await puppeteer.launch();
    const page = await browser.newPage();

    await page.goto( 'http://novinite.win/clock.php' );

    await new Promise( ( resolve, reject ) =>
    {
        let i = 0;

        const interval = setInterval( async () =>
        {
            console.log( await page.evaluate( () => document.getElementById( 'txt' ).textContent ) );

            if ( ++i === 10 )
            {
                clearInterval( interval );
                resolve( await browser.close() );
            }

        }, 1000 );
    });
})();

Пример Результат:

19: 24: 15

19: 24: 16

19: 24: 17

19: 24: 18

19: 24: 19

19: 24: 20

19: 24: 21

19: 24: 22 * ​​1037 *

19: 24: 23

19: 24: 24

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...