Получите обработанный HTML-код из выборки в javascript

Я пытаюсь получить таблицу с сайта, который нужно отобразить. Это приводит к тому, что мои полученные данные будут неполными. Тело пустое, так как скрипты еще не запускались.

Изначально я хотел получить все в браузере, но я не могу этого сделать, так как заголовок CORS не установлен, и у меня нет доступа к серверу.

Затем я попробовал серверный подход с использованием node.js вместе с node-fetch и JSDom. Я прочитал документацию и нашел параметр {pretendToBeVisual: true }, но это ничего не изменило. У меня есть простой код, размещенный ниже:

const fetch = require('node-fetch');
const jsdom = require("jsdom");
const { JSDOM } = jsdom;

let tableHTML = fetch('https://www.travsport.se/uppfodare/visa/200336/starter')
.then(res => res.text())
    .then(body => {
      console.log(body)
      const dom = new JSDOM(body, {pretendToBeVisual: true })
      return dom.window.document.querySelector('.sportinfo_tab table').innerHTML
    })
    .then(table => console.log(table))

Я ожидаю, что на выходе будет html таблицы, но на данный момент я получаю только метаданные и сценарии в ответе, что приводит к сбою кода при извлечении innerHTML.


person Patrick Bender    schedule 05.08.2019    source источник
comment
Функциональность, которую вы пытаетесь реализовать, называется сканированием веб-страницы. Node fetch просто извлекает страницу, но не отображает ее, как это делает браузер. Вы можете попробовать этот модуль npmjs.com/package/crawler, но я не уверен, что он работает со СПА,   -  person Ninad    schedule 05.08.2019
comment
Вам понадобится какой-нибудь инструмент, например puppeteer, phamtomjs или selenium, для рендеринга страницы. Вы получаете только html, а не то, что показывает вам браузер   -  person Doğancan Arabacı    schedule 05.08.2019


Ответы (1)


Почему бы не использовать безголовый google-chrome?

Я думаю, что указанный вами сайт не работает для --dump-dom, но вы можете активировать --remote-debugging-port=9222 и делать все, что хотите, как указано в https://developers.google.com/web/updates/2017/04/headless-chrome

Еще одна полезная ссылка: Как я могу сбросить весь Web DOM в его текущем состоянии в Chrome?

person ton    schedule 05.08.2019