gpt4 book ai didi

java - 如何查找给定文本的html元素

转载 作者:行者123 更新时间:2023-12-01 09:23:57 24 4
gpt4 key购买 nike

假设我有以下代码需要使用 JSoup 进行解析

<body> 
<div id="myDiv" class="simple" >
<p>
<img class="alignleft" src="myimage.jpg" alt="myimage" />
I just passed out of UC Berkeley
</p>
</div>
</body>

问题是,只给定一个关键字“Berkeley”,是否有更好的方法来查找具有此关键字的 html 中的元素/XPath(或它的列表,如果多次出现该关键字)作为其文本的一部分。

我无法事先查看 html,并且仅在运行时可用。

我当前的实现-使用Java-Jsoup,迭代body的子元素,并获取每个子元素的“ownText”和文本,然后深入到它们的子元素以缩小html元素的范围。我觉得这很慢。

最佳答案

不优雅但简单的方式可能看起来像:

import java.util.HashSet;
import java.util.Set;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import org.jsoup.parser.Tag;
import org.jsoup.select.Elements;

public class JsoupTest {

public static void main(String argv[]) {
String html = "<body> \n" +
" <div id=\"myDiv\" class=\"simple\" >\n" +
" <p>\n" +
" <img class=\"alignleft\" src=\"myimage.jpg\" alt=\"myimage\" />\n" +
" I just passed out of UC Berkeley\n" +
" </p>\n" +
" <ol>\n" +
" <li>Berkeley</li>\n" +
" <li>Berkeley</li>\n" +
" </ol>\n" +
" </div> \n" +
"</body>";
Elements eles = Jsoup.parse(html).getAllElements(); // get all elements which apear in your html
Set<String> set = new HashSet<>();
for(Element e : eles){
Tag t = e.tag();
set.add(t.getName()); // put the tag name in a set or list
}
set.remove("head"); set.remove("html"); set.remove("body"); set.remove("#root"); set.remove("img"); //remove some unimportant tags
for(String s : set){
System.out.println(s);
if(!Jsoup.parse(html).select(s+":contains(Berkeley)").isEmpty()){ // check if the tag contains your key word
System.out.println(Jsoup.parse(html).select(s+":contains(Berkeley)").get(0).toString());} // print it out or do something else
System.out.println("---------------------");
System.out.println();
}
}
}

关于java - 如何查找给定文本的html元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com