Document.querySelector возвращает несколько ветвей

Я пытаюсь очистить этот веб-сайт, получить таблицу и сохранить ее в массив

Чтобы попытаться отладить свои ошибки, я использовал вкладку консоли в CTRL + SHIFT + I в хроме. Там я использовал консоль для ввода своей команды. Команда была:

document.querySelectorAll("tr")

Я знаю, как сохранить данные в массив, и это даже работает, но только до первых 99 элементов. Этот снимок экрана — это то, что я получаю в качестве вывода, когда запускаю команду.

При этом вывод делится на 3 части. Каждая часть охватывает 99 элементов.

Есть ли способ получить все данные в одной части?

Мой код:

const text = await page.evaluate(() => Array.from(document.querySelectorAll(`tr > td`), element => element.textContent));
console.info(text.length);
            

Выход:

99
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Все данные существуют в одной части, в NodeList, возвращаемом querySelectorAll — то, что вы видите, — это просто консоль JavaScript, пытающаяся упростить ручную навигацию по свойствам, разделяя их для отображения в консоли. Пытаться:

const trs = document.querySelectorAll("tr");
console.info(trs.length);

и вы получите все 202 или 203. Вы должны иметь возможность очищать все данные по мере необходимости, например:

const arr = [...trs].map(tr => tr.children[0].textContent)

дает вам ["SPAC Ticker", "SPAC Ticker", "AACQ" и т. д. для столько элементов, сколько есть в NodeList — просто в качестве примера.

Text.length возвращает 99. На веб-сайте, который я использую, есть кнопка «загрузить еще». Они показывают только 99 записей данных за клик. Итак, если я нажму загрузить больше, я получу еще 99 значений.

SatvikVejendla 10.12.2020 01:43

Здесь работает просто отлично: i.stack.imgur.com/Lg9mX.png Ничего не нажимал. На вашем скриншоте также показана длина выше 200: i.stack.imgur.com/noRXA.png см. length: 203 и NodeList(203). Пожалуйста, проверьте еще раз, он должен работать.

CertainPerformance 10.12.2020 01:45

Это работает на веб-сайте, но в моем реальном коде это не так.

SatvikVejendla 10.12.2020 01:46

Пожалуйста, помогите мне исправить это.

SatvikVejendla 10.12.2020 01:54

Я установил Puppeteer, и он все еще работает: i.stack.imgur.com/46ho2.png

CertainPerformance 10.12.2020 01:57

ЧТО??! КАК? Это тот же код, что и у меня?

SatvikVejendla 10.12.2020 01:59

Почти, я просто изменил tr > td на просто tr, чтобы показать количество строк. (tr > td дает общее количество TD, которое намного больше)

CertainPerformance 10.12.2020 02:07

Звучит очень странно, если вы действительно получаете другой результат. Возможно, сайт отображает разные результаты в зависимости от IP-адреса пользователя или чего-то еще? Я пытался подключиться к нему как из США, так и из Канады, и это дает тот же результат, чуть больше 200 строк.

CertainPerformance 10.12.2020 02:09

СПАСИБО БОЛЬШОЕ. Это сработало и для меня. Ты понятия не имеешь, как я счастлив

SatvikVejendla 10.12.2020 02:09

Можете ли вы прикрепить скриншот всего кода? Конец немного обрезан. Просто хочу сравнить.

SatvikVejendla 10.12.2020 02:22

Такой же, как у вас, только с tr вместо него. Array.from(document.querySelectorAll('tr')

CertainPerformance 10.12.2020 02:27

Хорошо. Спасибо.

SatvikVejendla 10.12.2020 15:06

Другие вопросы по теме