我必须使用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
。
如你所见,这句话没有标签。
我可以做些什么来提取它?
我已经完成了我的研究,我所能找到的就是如何剥离所有标签。
感谢您的帮助!
答案 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
的内容,并且无法轻易告诉您文本的哪一部分是日期