JСуп | Получение части HTML

У меня проблема с поиском сайта с объявлениями об автомобилях. Я хотел бы получить имя рекламодателя от него. Основная проблема в том, что иногда это имя отображается по-разному.

1) Имя Каэтан

(https://www.otomoto.pl/oferta/mercedes-benz-klasa-e-w211-bardzo-dobry-stan-bez-wkladu-finansowego-warszawa-ryki-ID6BEBy9.html#2bd424144f)

   <div class = "seller-box__seller-info">
    <small class = "seller-box__seller-registration">Sprzedający na OTOMOTO od 2015</small>
    <small class = "seller-box__seller-type">Osoba prywatna</small>
    <h2 class = "seller-box__seller-name"> Kajetan </h2>
   </div>

2) Имя AS MOTORS Centrum Pojazdów Używanych KIA

(https://www.otomoto.pl/oferta/kia-ceed-1-6-crdi-136-km-m-bws-fvat-salon-serwis-polska-ID6BHFu3.html#2bd424144f)

<div class = "seller-box__seller-info">
 <small class = "seller-box__seller-registration">Sprzedający na OTOMOTO od 2019</small>
 <small class = "seller-box__seller-type">Dealer</small>
   <h2 class = "seller-box__seller-name">
   <div class = "seller-badge"> <img src = "xx.jpg" data-toggle = "tooltip" data-placement = "bottom" title = "" data-original-title = "Ten dealer korzysta z pakietu usług Premium Plus" class = "">
   </div>
    <a href = "https://asmotorsuzywane.otomoto.pl" title = "AS MOTORS Centrum Pojazdów Używanych KIA">AS MOTORS Centrum Pojazdów Używanych KIA</a>
    </h2>
</div>

В первом случае решение простое, потому что я сделаю это так:

public static String fetchOwnerName (String html) {
        Elements ownerElement = Jsoup.parse(html).getElementsByClass("seller-box__seller-info").select("h2");
        String owner = StringUtils.substringBetween(String.valueOf(ownerElement), "\">", "</h2>");
        return owner;
    }

Но во втором случае проблема в том, что после <h2> идут дополнительные <div>, а еще между <a href = "" находится название рекламодателя.

Как мне изменить метод fetchOwnerName, чтобы он был универсальным? Я использую библиотеку JSOUP для анализа HTML-страницы. Спасибо за все ваши предложения.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
34
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить текст внутри тегов h2, не беспокоясь о дополнительных тегах i.ediva

Вам достаточно вызвать .text()

Elements ownerElement = Jsoup.parse(html).getElementsByClass("seller-box__seller-info").select("h2");
String owner = ownerElement.text();

Это будет работать, если между тегами h2 нет другого текста, кроме имени рекламодателя.

Другие вопросы по теме