使用Jsoup从网页获取没有标签的文本

时间:2016-05-18 08:42:16

标签: java jsoup

我必须使用Jsoup从网页中提取一些数据。

我很容易提取标签中包含的数据,但我仍然需要一些没有标记的数据。

这是HTML源代码的示例:

<a id="aId" href="aLink" style="aStyle">
    <span id="spanId1">
        <b>Caldan Therapeutics</b> 
        Announces Key Appointments And A Collaboration With 
        <b>Sygnature Discovery</b>  
    </span>
    <span id="spanId2" style="spanStyle2">
        5/17/2016
    </span>
</a>

我已经提取了<b>代码中包含的数据以及日期,但我现在想要的是提取句子Announces Key Appointments And A Collaboration With

如你所见,这句话没有标签。

我可以做些什么来提取它?

我已经完成了我的研究,我所能找到的就是如何剥离所有标签。

感谢您的帮助!

2 个答案:

答案 0 :(得分:7)

我找到了满足这一特定需求的答案,我想与将来可能面临同样问题的任何人分享。

您只需使用ownText()功能,它就会删除元素子标签中的文字。

在我们的例子中:

public static void main(String[] args) throws Exception {
    Document doc = Jsoup.connect("http://source-url").get();
    Elements spanTags = doc.getElementsByTag("span");
    for (Element spanTag : spanTags) {
        String text = spanTag.ownText();
        System.out.println(text);
    }
}

答案 1 :(得分:2)

您也可以使用以下代码执行此操作,但它会将您的文本作为String返回,用“\ n”替换段落,并且不允许您检测文本样式(如粗体,斜体等)。

如果您只想获得纯文本,这非常有用:

Element aElem = doc.getElementById("spanId1");
String yourText = aElem.wholeText();

如果在您的情况下使用aId作为元素的ID,您还将获得spanId2的内容,并且无法轻易告诉您文本的哪一部分是日期