Как получить указанные c подэлементы html данных с помощью Jsoup - PullRequest
0 голосов
/ 17 апреля 2020

Поэтому я пытаюсь получить все цены из файла Html с помощью Jsoup. Упрощенный Html структурирован примерно так:

//some html

<div class="price-point-wrap use-roundtrippricing">
    <div class="price-point-wrap-top use-roundtrippricing">


    <div class="pp-from-total use-roundtrippricing">Roundtrip</div>
    </div>
    <div class="price-point price-point-revised use-roundtrippricing">
        $509
    </div>

    <div class="fare-select-button-div">
        <input type="button" aria-describedby="sr_product_ECONOMY_123-745|1975-UA" value="Select" class="fare-select-button">
        <span class="visuallyhidden">fare for Economy  (lowest)</span>
    </div>

</div>

//some html

 <div class="price-point-wrap use-roundtrippricing">
    <div class="price-point-wrap-top use-roundtrippricing">


    <div class="pp-from-total use-roundtrippricing">Roundtrip</div>
    </div>
    <div class="price-point price-point-revised use-roundtrippricing">
        $1,046
    </div>

    <div class="fare-select-button-div">
        <input type="button" aria-describedby="sr_product_MIN-BUSINESS-OR-FIRST_123-745|1975-UA" value="Select" class="fare-select-button">
        <span class="visuallyhidden">fare for First  (2-cabin, lowest)</span>
    </div>

    <div class="pp-remaining-seats">​5 tickets left at this price​</div>
</div>

//some html

Это то, что я пробовал до сих пор:

File input = new File("Flights.html");
Document document = Jsoup.parse(input, "UTF-8", "");
Elements prices = document.getElementsByClass("price-point");
for(Element e: prices){
    System.out.println(e.toString());
}

Это дает мне следующий результат:

<div class="price-point price-point-revised use-roundtrippricing">
    $509
</div>
<div class="price-point price-point-revised use-roundtrippricing">
    $1,046
</div>
.....

Но теперь мне нужны только такие цены, как:

509
1046

Я пробовал регулярное выражение, сохраняя только цифры e.toString().replaceAll("\\D+","") при печати, это работает, но я не хочу этого достигать , Как я могу получить только цифры с помощью Jsoup?

1 Ответ

0 голосов
/ 17 апреля 2020

Благодаря комментарию @Eritrean мне нужно было использовать e.text() вместо e.toString(), что дало мне

$509 
$1,046

Мне все еще нужно использовать регулярное выражение типа e.replaceAll("[$,]", ""), чтобы избавиться от знаки доллара.

...