Как настроить JSDOM для полной визуализации страницы React (например, Reddit)? - PullRequest
0 голосов
/ 28 мая 2019

Я пытаюсь отобразить страницу Reddit с помощью JSDOM, но он не выполняет js, который заполняет остальную часть HTML. Так что я получаю только часть страницы. Моя цель - получить доступ к каждому комментарию в теме.

Я установил runScripts: «опасно» и URL: «https://www.reddit.com" в объекте конфигурации, но безрезультатно.

const jsdom = require("jsdom");
const axios = require('axios');
const { JSDOM } = jsdom;
const config = {
    headers: {
        "Host": "www.reddit.com",
        "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:67.0) Gecko/20100101 Firefox/67.0",
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language": "en-US,en;q=0.5",
        "Accept-Encoding": "gzip, deflate, br",
        "Connection": "keep-alive",
        "Upgrade-Insecure-Requests": 1,
        "Cache-Control": "max-age=0"
    }
}

axios('https://www.reddit.com/r/learnprogramming/comments/bqnhyu/another_self_taught_success_story_i_just_landed/', config)
    .then((res) => {
        const dom = new JSDOM(res.data, { runScripts: "dangerously", pretendToBeVisual: true, url: "https://www.reddit.com"});
        setTimeout(() => {
            const p_tags = dom.window.document.getElementsByClassName('himKiy');
            for (let tag of p_tags) {
                console.log(tag.innerHTML);
            }
        }, 3000);
    });
...