Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Обрезать HTML! (https://javascript.ru/forum/misc/78239-obrezat-html.html)

laimas 20.08.2019 17:43

Цитата:

Сообщение от Роман Андреевич
стандартными методами не могу потому что это со стороны сервера происходит на nodejs. Поэтому регуляркой надо получить содержимое.

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

var str = '<html>\
<head>\
</head>\
<body>\
<div><p>Text <span>text/span></p></div>\
</body>\
</html>',
tmp = document.createElement('template');

tmp.innerHTML = str;
console.log(tmp.content.querySelector('div'));

Malleys 21.08.2019 00:06

laimas, для этого лучше использовать DOMParser
var doc = new DOMParser().parseFromString(`<html>
<head>
</head>
<body>
<div><p>Text <span>text/span></p></div>
</body>
</html>`, "text/html");

console.log(doc.querySelector('div'));


Цитата:

Сообщение от Роман Андреевич
парюсь с регулярками, прошу помощи

Используйте вместо этого DOMParser

Цитата:

Сообщение от Роман Андреевич
стандартными методами не могу потому что это со стороны сервера происходит на node.js

Там работает точно такое же ядро JS.

Цитата:

Сообщение от Роман Андреевич
Поэтому регуляркой надо получить содержимое.

Я вам для этого рекомендую использовать DOMParser, таким образом вы сможете работать с документом, как с объектом DOM.

DOMParser доступен во всех браузерах, также есть реализация для node.js

Цитата:

Сообщение от Роман Андреевич
надо из него вырезать все, вокруг тега main, т.е. остается только <main>

Цитата:

Сообщение от Роман Андреевич
нужно получить то что я выделил дефисами в коде (т. е. элемент, подходящий под селектор .ticket-box.ticket-box-c2)

var doc = new DOMParser().parseFromString(`<html><body><main>код, полученный каким угодно способом</html>`, "text/html");

var node = doc.querySelector("main, .ticket-box.ticket-box-c2"); // выбирай нужный элемент
console.log(node.outerHTML); // и покажи его код, например, в консоли


Чтобы использовать DOMParser в node.js его нужно установить в проект пакет jsdom (npm i jsdom) и импортировать (const { JSDOM } = require("jsdom");
const { DOMParser } = new JSDOM().window; )

Т. е. тот же самый пример для node.js выглядит так (добавлены первые две строчки)
const { JSDOM } = require("jsdom")
const { DOMParser } = new JSDOM().window;

var doc = new DOMParser().parseFromString(`<html><body><main>код, полученный каким угодно способом</html>`, "text/html");

var node = doc.querySelector("main, .ticket-box.ticket-box-c2"); // выбирай нужный элемент
console.log(node.outerHTML); // и покажи его код, например, в консоли

Роман Андреевич 21.08.2019 07:59

j0hnik,
огонь!!!!)))

Роман Андреевич 21.08.2019 08:34

Malleys, спасибо


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