Nodejs: я хочу очистить html от nba.com/stats но я не получаю весь html с помощью запроса

#javascript #node.js #web-scraping #request #cheerio

#javascript #node.js #очистка веб-страниц #запрос #приветствую

Вопрос:

Я пытаюсь очистить https://stats.nba.com/players/traditional/?sort=NBA_FANTASY_PTSamp;dir=-1amp;Season=2018-19amp;SeasonType=Regular Seasonamp;LastNGames=3 с помощью nodejs, но я не получаю тот же html, что отображается на сайте, мне нужны данные из таблицы, но они присутствуют только при проверке элемента на сайте, я пробовал с помощью request cheerio, jquery, scrape-table, но они всегда очищают исходный html.

Комментарии:

1. NBA предлагает API — почему бы не воспользоваться им? Очистка их сайта, безусловно, нарушает их ToS.

2. Посмотрите на вкладку вашего браузера. Данные поступают из xhrs

3. @Filburt Их API действительно беден и не имеет того, что я ищу, и я сказал «удаление», но слово действительно слишком сильное в моем случае, поскольку я буду использовать очень мало данных, например, раз в день, это будет так, как будто я захожу на сайт сам.

Ответ №1:

Да, это потому, что сайт построен с использованием Angular. Страница генерируется с помощью Javascript. Весь запрос выдает вам базовый HTML, но на этом он заканчивается. Он не будет извлекать скрипты, не будет создавать DOM.

Вам нужен более мощный инструмент: безголовый браузер, такой как PhantomJS или Puppeteer.

Они будут загружать не только базовый HTML, но и скрипты и делать все как настоящий браузер. Затем вы можете извлечь из них полностью созданную HTML-страницу.