Я использую cheerio для получения статистической информации от https://www.nba.com/players/langston/galloway/204038, но не могу отобразить данные таблицы - PullRequest
0 голосов
/ 30 апреля 2020
[the information i want to access][1]


  [1]: https://i.stack.imgur.com/4SpCU.png

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

var cheerio = require("cheerio");

   var axios = require("axios");



axios
  .get("https://www.nba.com/players/langston/galloway/204038")
  .then(function (response) {
    var $ = cheerio.load(response.data);

    console.log(
      $("player-detail").find("section.nba-player-stats-traditional").find("td:nth-child(3)").text()

    );


  });

1 Ответ

0 голосов
/ 30 апреля 2020

Фактический html, возвращенный по вашему запросу на получение, не содержит данных или таблицы. Когда ваш браузер загружает страницу, выполняется скрипт, который извлекает данные из вызовов API и создает большинство элементов на странице.

Если вы откроете chrome инструменты разработчика (CTRL + SHIFT + J) ) и перейдите на вкладку «Сеть» и перезагрузите страницу, чтобы увидеть все выполняющиеся запросы. Первый - это html, который загружается в ваш запрос ios GET axe. Если вы нажмете на это, вы увидите, что HTML очень базовый c по сравнению с тем, что вы видите, когда просматриваете страницу.

Если вы нажмете «XHR», будет показано большинство вызовов API которые сделаны, чтобы получить данные. Есть интересный вариант для «204038_profile. json». Если вы нажмете на нее, вы увидите информацию, которую, я думаю, вам нужно, в формате JSON, который будет намного проще использовать без анализа таблицы html. Вы можете щелкнуть правой кнопкой мыши «204038_profile. json» и скопировать полный URL-адрес:

https://data.nba.net/prod/v1/2019/players/204038_profile.json

ПРИМЕЧАНИЕ. Большинству веб-сайтов не понравится, что вы используете такие данные, как этот, вы можете проверить их политику. является. Они могут затруднить доступ к данным или изменить URL-адреса в любое время.

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

Второй вариант особенно интересен и содержит ответ о том, как вы можете перехватывать и мутировать запросы от puppeteer

...