Вход

Просмотр полной версии : Два очень детских вопроса от новичка...


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
Спрашиваетcя, а как в синхронном режиме получить то что отображается в браузере?
В браузере отображается страница после парсинга html кода, работы скриптов, рендеринга и визуализации.
Что бы это получить надо получать страницу в браузере.
Node не работает с html, css и javascript скрипты у него свои.

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

beria
21.07.2022, 17:59
В браузере отображается страница после парсинга 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
Только само содержимое в любом формате.
Ну страница может быть только в двух форматах - либо html текст, либо DOM. Вы получаете изначальное html представление страницы. Если она еще должна обрабатываться скриптами (в браузере), что бы получить конечный результат, то без DOM ну ни как нельзя. Ведь скрипты в 99,99% случаев только и делают, что курочат изначальный DOM.

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