使用jSoup选择器从div中提取文本行

时间:2018-01-23 09:58:18

标签: jsoup

这是html代码:

 <div class="comment">

        <a name="comment2609098"></a>
        <div class="mediadbgalleryfloat" style="margin: 0 14px 0 0;">
<div style="width: 75px; height: 75px;" class="mediadbgallery relative">
    <span class="edge"></span>
    <div class="container">
        <div style="overflow: hidden; width: 75px; height: 75px; position: relative;"><a href="https://www.meinbezirk.at/kitzbuehel/profile/hel-mut-130701.html" class="pointer">           <img src="https://media05.regionaut.meinbezirk.at/2017/11/07/13630293_thumb.jpg?1510079257" class="noborder" style="position: absolute; top: -5px; right: 0px; width: 75px; height: 84px; border: 0;" alt="Hel Mut" title="Hel Mut"></a></div></div>

    <span class="floatingUserPointsLow">157</span>                      

        </div>
</div>

                        <a href="https://www.meinbezirk.at/kitzbuehel/profile/hel-mut-130701.html">Hel Mut</a>
            aus <a href="https://www.meinbezirk.at/tirol/kitzbuehel/">Kitzbühel</a>
            | 22.01.2018 | 05:13                        &nbsp;                  <a class="metaReport right" title="Kommentar melden" href="javascript: void(0);" onclick="AJAX.overlay.showOverlay('reportContent', {type: 'comment', permalink: 'https://www.meinbezirk.at/kitzbuehel/politik/querulanten-braucht-man-nicht-d2381342.html#comment2609098'}); AJAX.overlay.lockOverlay(true, 'Wird geladen...');">Melden</a>
                            <div class="clearright"></div>

        <div class="spacerM"></div>
        <p class="hidden">
            Ein sehr interessantes Thema! Ich beobachte das auch schon seit längerem!           </p>
        <div class="clearboth"></div>
    </div>

我需要提取日期,在这种情况下它是22.01.2018。我只需要使用jSoup Selector来做这件事。

我试过

 div.comment div.container :eq(n)

n - 各种数字

 div.comment a:eq(3) 

我真的不知道如何获得给定的文字:(

我感谢任何帮助。

谢谢

2 个答案:

答案 0 :(得分:0)

22.01.2018是div class =&#34; comment&#34;您可以使用正则表达式检索日期,如下所示。

    public void test() {
    try {
        Document doc = Jsoup.connect(your url).get();

        // get <div class="comment">
        Element comment = doc.select("div.comment").first();

        // retrieve the date inside "|" 
        String regex = "\\|(.*?)\\|";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(comment.text());

        if (matcher.find()) {
            System.out.println(matcher.group(1));  // 22.01.2018
        }


    } catch (IOException e) {
        e.printStackTrace();
    }
}

答案 1 :(得分:0)

有两种方法可以接近所需的字符串:

  1. 使用@Keizo已经提到的doc.select("div.comment").first().ownText();,它将返回aus | 22.01.2018 | 05:13  
  2. 如果您的html始终具有相同的结构,并且您需要的文本始终位于最后一个和第二个链接(a-tag)之间,则会使用doc.select("div.comment").first().select("a").last().previousSibling();,这将返回| 22.01.2018 | 05:13 &nbsp;
  3. 我没有看到其他选择器或选择器组合,只能给你22.01.2018