繁体   English   中英

如何使用java和jsoup解析HTML文本和链接

[英]How to parse HTML text and links with java and jsoup

我需要解析网页上的文字。 文本以这种方式呈现:

nonClickableText= link1 link2  nonClickableText2= link1 link2

我希望能够将所有内容转换为java中的字符串。 不可点击的文本应保持原样,而可点击的文本应替换为其实际链接。

所以在java中我会这样:

String parsedHTML = "nonClickableText= example.com example.com nonClickableText2= example3.com example4.com";

这是一些图片: 第一

link1link2究竟是什么? 根据你的例子

“... nonClickableText2 = example3.com example4.com”

它们可以是不同的,那么除了href之外还有什么来源呢?

基于您的图像,以下代码应该为您提供采用最终字符串演示的所有内容。 首先,我们使用带有前面文本节点的<a> -children获取<strong> -block然后遍历子节点:

String htmlString = "<html><div><p><strong>\"notClickable1\"<a rel=\"nofollow\" target=\"_blank\" href=\"example1.com\">clickable</a>\"notClickable2\"<a rel=\"nofollow\" target=\"_blank\" href=\"example2.com\">clickable</a>\"notClickable3\"<a rel=\"nofollow\" target=\"_blank\" href=\"example3.com\">clickable</a></strong></p></div></html>";

Document doc = Jsoup.parse(htmlString); //can be replaced with Jsoup.connect("yourUrl").get();
String parsedHTML = "";

Element container = doc.select("div>p>strong").first();

for (Node node : container.childNodes()) {
    if(node.nodeName().equals("a") && node.previousSibling().nodeName().equals("#text")){
        parsedHTML += node.previousSibling().toString().replaceAll("\"", "");
        parsedHTML += "= " + node.attr("href").toString() + " ";
    }
}
parsedHTML.trim();

System.out.println(parsedHTML);

输出:

notClickable1= example1.com notClickable2= example2.com notClickable3= example3.com 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM