Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   Два очень детских вопроса от новичка... (https://javascript.ru/forum/node-js-io-js/84256-dva-ochen-detskikh-voprosa-ot-novichka.html)

beria 21.07.2022 17:17

Два очень детских вопроса от новичка...
 
Есть задача получить на js нескольких страниц... Без вяких библиотек. Чистое nodejs, раз никак не получится такое на чистом js
Читаю мануал...
И делаю
const https = require('https')
function readURL(url) {
    return new Promise((resolve, reject) => {
        https.get(url, (res) => {
            const { statusCode } = res;
            let error;
            if (statusCode !== 200) {
                error = new Error(`Ошибка: ${statusCode}`);            }
            if (error) {
                reject(error);
                res.resume();
                return;            }
            res.setEncoding('utf8');
            let rawData = '';
            res.on('data', chunk => rawData += chunk);
            res.on('end', () => resolve(rawData));
        }).on('error', (e) => reject(e));
    })
}
readURL('адрес страницы')
.then(data =>
    console.log(data)
)
.catch(err =>
    console.log(err.message)
)


Все работает так как надо, но страница формируется через JS, и я получаю её код без постобработки... Спрашиваетcя, а как в синхронном режиме получить то что отображается в браузере?
И сразу в тему второй.... Если нужна будет регистрация на сайте, то как в таком случае вводить имя пользователя и пароль...... Как я понимаю регистрация и получение страниц по адресу, в этом случае будет разные операции..
Извиняюсь, что не понимаю элементарные вещи....

voraa 21.07.2022 17:45

Цитата:

Сообщение от beria
Спрашиваетcя, а как в синхронном режиме получить то что отображается в браузере?

В браузере отображается страница после парсинга html кода, работы скриптов, рендеринга и визуализации.
Что бы это получить надо получать страницу в браузере.
Node не работает с html, css и javascript скрипты у него свои.

Возможно, для Node есть какие то библиотеки, производящие парсинг html, имитирующие работу DOM и манипуляции с ним.

beria 21.07.2022 17:59

Цитата:

Сообщение от voraa (Сообщение 546775)
В браузере отображается страница после парсинга html кода, работы скриптов, рендеринга и визуализации.
Что бы это получить надо получать страницу в браузере.
Node не работает с html, css и javascript скрипты у него свои.

Мне не нужен рендеринг и визуализация. Мне даже формальный DOM не нужен. Только само содержимое в любом формате. Там дальше я уже сам разберусь что с ним делать. Аналог - текстовый безголовый браузер, работающий с jаva script. Как к примеру phantomJS или жавовые сборки links. Там так точно можно.
А для nodejs есть jsdom, но его просто функционал избыточен и не хочется тащить зависимости для нескольких строк кода..

voraa 21.07.2022 20:36

Но если страница обрабатывается скриптом, то она работает с DOM (а не с текстом) И без DOM никуда не деться.

voraa 21.07.2022 20:41

Цитата:

Сообщение от voraa
Только само содержимое в любом формате.

Ну страница может быть только в двух форматах - либо html текст, либо DOM. Вы получаете изначальное html представление страницы. Если она еще должна обрабатываться скриптами (в браузере), что бы получить конечный результат, то без DOM ну ни как нельзя. Ведь скрипты в 99,99% случаев только и делают, что курочат изначальный DOM.

beria 22.07.2022 11:04

Цитата:

Сообщение от voraa (Сообщение 546778)
Ну страница может быть только в двух форматах - либо html текст, либо DOM. Вы получаете изначальное html представление страницы. .

Я очень тупой. Целый день сидел, даже с разными библиотеками под nodejs - результата ноль. Причем часто Nodejs и консоль реального браузера отдавала разные результаты, а alert в nodejs вообще не работает ...
Мне же немного надо… Просто , по возможности компилируемую под разные платформы библиотеку на любом языке, с инкапсулирванным javascript в которой есть функция(процедура), которая берут URL и отдает в любом формате dom или строку.
Дальше уже все пойдет вообще в вордоэксельный VBА, как внешняя библиотека.
Все это делается на богомерзком CEF4, но настолько медленно и печально, что 10 потоков занимают больше гига оперативки, а сама процедура тянет зависимостей на 200 мб, то есть весь cef....


Часовой пояс GMT +3, время: 04:17.