package com.auction; import com.vladsch.flexmark.html2md.converter.FlexmarkHtmlConverter; import org.jsoup.Jsoup; import org.junit.jupiter.api.Test; public class Parser { public record AuctionItem( String title, String link, int lotCount, String location, String closingTime ) { } public static AuctionItem parseItem(String html, String baseUrl) { var doc = Jsoup.parse(html, baseUrl); org.jsoup.nodes.Element li = doc.selectFirst("li.grid"); if (li == null) return null; var linkEl = li.selectFirst("a[data-cy=item-link]"); String link = linkEl != null ? linkEl.absUrl("href") : null; String title = text(li, "div.heading-6"); String closingTime = text(li, "[data-cy=end-time-text]"); String lotCountStr = text(li, "[data-cy=lot-count-text]").trim(); int lotCount = lotCountStr.isEmpty() ? 0 : Integer.parseInt(lotCountStr); // Tweede span in de location grid String location = li.select("[data-cy=location-text] span").size() >= 2 ? li.select("[data-cy=location-text] span").get(1).text() : null; return new AuctionItem(title, link, lotCount, location, closingTime); } private static String text(org.jsoup.nodes.Element root, String css) { var el = root.selectFirst(css); return el != null ? el.text() : ""; } @Test void testbla() { String html = "