我在获取带有汽车广告的网站时遇到问题。我想从中获得广告客户的名字。主要问题是有时该名称以不同的方式显示。
1)名称为 Kajetan
<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 CentrumPojazdówUżywanychKIA
<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页面。感谢您的所有建议。
答案 0 :(得分:1)
您可以在h2标签内获取文本,而不必担心其他标签i.e
div
a
您只需致电.text()
Elements ownerElement = Jsoup.parse(html).getElementsByClass("seller-box__seller-info").select("h2");
String owner = ownerElement.text();
如果在h2
标签之间没有除广告商名称之外的其他文字,则此方法有效