簡體   English   中英

從 jsoup 中提取元素以匹配元素屬性中的文本值

[英]extracting a element from jsoup for a text value match in the element attribute

如何使用屬性中的特定文本獲取跨度? 我試圖提取文本“星星”之后的數字。 那么如何選擇一個包含文本“rating_sprite stars”的 span 標簽,並且我希望從屬性中提取值“star5”,以便我可以從文本中獲取 5 個。

目前我沒有得到任何元素!

 String url = "https://www.morningstar.co.uk/uk/funds/snapshot/snapshot.aspx?id=F00000WYA1";
        Document doc = null;
        try {
            doc = Jsoup.connect(url).get();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Elements spans = doc.select("span.rating_sprite");
        System.out.println(spans);

HTML 片段看起來像這樣

<div class="snapshotTitleBox">
  <h1>Comgest</h1>
  <span class="rating_sprite stars5"></span>
  <span class="rating_sprite analyst-rating-5"></span>
  <div style="float:right; margin-top:6px;"></div>
</div>

僅使用 jsoup 無法做到這一點。 但是您已經擁有了所有span.rating_sprite元素,因此您可以遍歷它們中的每一個,並找到一個與正則表達式stars(\\d)類匹配的類。 然后您可以捕獲僅包含數字的第一組:

    Pattern p = Pattern.compile("stars(\\d)");
    for (Element span : spans) {
        for (String className : span.classNames()) {
            Matcher m = p.matcher(className);
            if (m.matches()) {
                System.out.println("stars: " + m.group(1));
            }
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM