28
Окт
2021

jsoup: замена значений для всех элементов на странице

Пробую сделать автоматический переводчик нужного мне текста с английского на русский. Формат текста на входе:

<html>
<head></head>
<body>
Sample of <strong>English</strong> <span style=#09999>text</span>
<a href = "https://example.com">with>/a>
<h2>different</h2>
formatting
styles
and
<ul><li>many </li>
<li>other</li> 
<li>things</li></ul>
</body>
</html>

Количество вложенных элементов и их структура заведомо неизвестны, всего на входе около 10к html страниц с разной структурой. Мне нужно вытащить текст со всех элементов, перевести его сторонним транслейтером, положить назад в элементы, в которых текст был до этого.

Что я пробовал: Elements eles = doc.select("*"); При таком селекторе весь текст переводится, но полностью слетает форматирование. Т.е. куда-то теряется изначальная входная структура и на выходе получается простыня текста без намека на отступы, выделения и т.п.

Elements eles = doc.getAllElements(); и Elements eles = doc.body().children().select("*); Если вытаскивать таким образом, то сохраняется структура, но переводятся только элементы, которые являются подзаголовками, списками, анкором ссылок и т.п., но обычный текст в <p></p> остается на английском.

Подскажите, пожалуйста, как селектить правильно все эелементы, проитерировать их так, чтобы потом текстовое содержимое вернулось в нужную структуру?

Источник: https://ru.stackoverflow.com/questions/1343094/jsoup-%D0%B7%D0%B0%D0%BC%D0%B5%D0%BD%D0%B0-%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B9-%D0%B4%D0%BB%D1%8F-%D0%B2%D1%81%D0%B5%D1%85-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2-%D0%BD%D0%B0-%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B5

Тебе может это понравится...

Добавить комментарий