У меня проблема с поиском сайта с объявлениями об автомобилях. Я хотел бы получить имя рекламодателя от него. Основная проблема в том, что иногда это имя отображается по-разному.
1) Имя Каэтан
<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
<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-страницы. Спасибо за все ваши предложения.




Вы можете получить текст внутри тегов h2, не беспокоясь о дополнительных тегах i.ediva
Вам достаточно вызвать .text()
Elements ownerElement = Jsoup.parse(html).getElementsByClass("seller-box__seller-info").select("h2");
String owner = ownerElement.text();
Это будет работать, если между тегами h2 нет другого текста, кроме имени рекламодателя.