Считайте годы с Кукольником - PullRequest
0 голосов
/ 15 января 2020

Я пытаюсь подсчитать общее число «год» со следующей страницы: См. ОБНОВЛЕНИЕ ниже.

В моем скрипте Nodejs у меня есть:

await page.click(SELECT_YEARS_TO_VIEW);
await Promise.all([
    page.waitForNavigation({ waitUntil: 'networkidle0' }),
    page.waitForSelector('#ItemsTable > tbody > tr > td.DataItemSelections')
]);
const numberOfYears = (await page.$$('#ItemsTable > tbody > tr > td.DataItemSelections')).length;

console.log(`Years length: ${numberOfYears}.`);

Возвращает: Длина лет: 16.

Вместо этого в консоли Chrome, если я запускаю:

document.querySelectorAll('#ItemsTable > tbody > tr > td.DataItemSelections').length;

(правильный) вывод: 39

Я прочитал Кукольник - подсчет элементов в DOM , но предложения внутри него не решили мою проблему.

ОБНОВЛЕНИЕ: the Начальная точка: https://unctadstat.unctad.org/wds/TableViewer/tableView.aspx?ReportId=96740

enter image description here

Затем необходимо нажать значок «Выбрать элементы для просмотра», а затем «ГОД»: enter image description here Здесь, на странице, где мне нужно подсчитать количество лет: enter image description here

1 Ответ

0 голосов
/ 16 января 2020

Сайт меняется html в зависимости от прокрутки, вы можете открыть инструменты разработчика и проверить изменение тегов html tr с помощью прокрутки, вы можете попробовать выполнить прокрутку, чтобы получить данные, но вы можете просто перехватить ответ со всеми этими данными в любом случае.

Другой способ подсчета лет,

await page.setRequestInterception(true);

page.on('response', async response => {
    if (response.url().indexOf('https://unctadstat.unctad.org/wds/TableViewer/getItems.aspx') > -1) {
      console.log(response.url());
      console.log(await response.text()); // parse xml to json and count it
    }
  })

await Promise.all([
    page.waitForNavigation({ waitUntil: 'networkidle0' }),
    page.click(SELECT_YEARS_TO_VIEW)
  ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...