gpt4 book ai didi

java - 如何检查html文档是否包含字符串

转载 作者:太空宇宙 更新时间:2023-11-04 13:37:23 28 4
gpt4 key购买 nike

检查 URL 是否包含给定字符串的快速方法是什么?我尝试了 jsoup 和模式匹配,但有没有更快的方法。

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class JsoupTest {

public static void main(String[] args) throws Exception {

String url = "https://en.wikipedia.org/wiki/Hawaii";
Document doc = Jsoup.connect(url).get();
String html = doc.html();

Pattern pattern = Pattern.compile("<h2>Contents</h2>");
Matcher matcher = pattern.matcher(html);
if (matcher.find()) {
System.out.println("Found it");
}
}
}

最佳答案

这要看情况。如果您的模式实际上只是在页面内容中准确找到的简单子(monad)字符串,那么您建议的两种方法都太过分了。如果确实如此,您应该获取该页面,而不用在 JSoup 中解析它。如果你想获取页面,你仍然可以使用 Jsoup,只是不要启动解析器:

Connection con = Jsoup.connect("https://en.wikipedia.org/wiki/Hawaii");
Response res = con.execute();
String rawPageStr = res.body();

if (rawPageStr.contains("<h2>Contents</h2>")){
//do whatever you need to do
}

如果模式确实是正则表达式,请使用:

Pattern pattern = Pattern.compile("<h2>\\s*Contents\\s*</h2>");
Matcher matcher = pattern.matcher(rawPageStr);

只有当您不需要解析页面的更多内容时,这才有意义。然而,如果您确实想通过 CSS 选择器执行 DOM 的结构化搜索,JSoup 并不是一个糟糕的选择,尽管像 TagSoup 这样基于 SAX 的方法可能会更快一些。

Document doc = Jsoup.connect("https://en.wikipedia.org/wiki/Hawaii").get();
Elements h2s = doc.select("h2");
for (Element h2 : h2s){
if (h2.text().equals("Contents")){
//do whatever & more
}
}

关于java - 如何检查html文档是否包含字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31573767/

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