Как объединить консольные команды браузера в одну на вывод?

Рейтинг: -1Ответов: 1Опубликовано: 07.05.2023

Имеется страничка: https://ru.warface.com/officers/

Данную страницу просматривать может только мой авторизованный аккаунт (ибо я офицер клана).

Получить нужно все никнеймы игроков на этой странице, количество набранных ими очков, дата вступления.

Использую браузер Google Chrome.

Вот так нужные данные выглядят в инспекторе: https://ibb.co/qCpV5gp

Вот такие команды в консоли выдают полную информацию о 1ом игроке из таблицы:

document.getElementsByClassName('oc_1')[0].innerText
document.getElementsByClassName('oc_3')[0].innerText
document.getElementsByClassName('oc_5')[0].innerText

Данные второго игрока:

document.getElementsByClassName('oc_1')[1].innerText
document.getElementsByClassName('oc_3')[1].innerText
document.getElementsByClassName('oc_5')[1].innerText

И так далее, всего 50 игроков, меняется только [0]

Основной скрипт я пишу на AHK, и в целом он готов, но он уж очень медленно выполняется, ибо все JS скрипты прописаны отдельными командами. В JS я слаб, и прошу помощи, как объединить это в 1 скрипт, который выдавал бы все значения сразу?

Ответы

▲ 0Принят

Используем метод getElementsByTagName, его как и остальные getElement... можно вызывать как на документе, так и на любом элементе.

    const rows = Array.from(document.getElementsByTagName("tr"));
    const result = rows.map(it => extractUserInfoFromTableRow(it));
    console.log(result)

    function extractUserInfoFromTableRow(row) {
        const data = row.getElementsByTagName("td");
        return {
            userName: data[0].innerText,
            value: data[2].innerText,
            date: data[4].innerText
        }
    }