Проблема в следующем есть блок с текстом в ктором вложен еще 1 болк с текстом, при получении данных текст сливается в одну сплошную. Возможно ли пропустить вывод вложенного div блока с классовым именем text_block ? Или же можно как-то разделить данные ?
<div class="text_block_in">
<div class="text_block">Тут какой либо текст</div>Прочитать текст.</div>
При скрапе таким способом:
request("https://site.ru/news/", (err, res, html) => {
const htmlAll = cheerio.load(html);
htmlAll('.info_block_line').each((i, el) => {
const output = htmlAll(el)
.find('.text_block_in')
.text()
.replace(/\s\s+/g,'');
console.log(output);
});
});
На выходе получаю такой текст:
Тут какой либо текстПрочитать текст.
.text() выдает весь текст элемента, включая текст вложенных блоков.
Текст только самого элемента должен помочь выдать такой код
const output = htmlAll(el)
.find('.text_block_in')
.contents()
.filter(function(){
return this.nodeType === Node.TEXT_NODE;
})[0].nodeValue
На случай если на сервере это не сработает(т.к. клиентский код), есть более медленный вариант через jquery-like
htmlAll(el)
.find('.text_block_in')
.clone() //clone the element
.children() //select all the children
.remove() //remove all the children
.end() //again go back to selected element
.text();
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В моём скрипте функция анимирует появление блока на странице путём увеличения его высотыАнимация реализована заменой класса элемента
Есть несколько компонентовОдин отвечает за дату, другие за время
Есть горизонтальный сайт который работает через slick и работает по блочноНужно чтобы, при скролле на следующий слайд запускалась анимация...