如何用Jsoup提取链接标题中的“396900 runs”?
使用Jsoup提取“396900 runs”的分步指南
嘿,作为网页抓取和Jsoup的新手,这个任务其实很简单,我一步步带你完成:
第一步:解析HTML片段
首先你需要把给定的HTML字符串转换成Jsoup可以处理的Document对象,用Jsoup.parse()方法就能轻松做到。第二步:定位目标标签
你要提取的文本在<a>标签里,我们可以通过它的href属性精准定位,用Jsoup的选择器语法a[href=#taskruns]就能找到这个元素。第三步:提取标签文本
拿到<a>元素后,调用text()方法就能获取它的完整文本内容:“396900 runs submitted”。第四步:截取你需要的部分
现在只需要去掉末尾的“ submitted”就行,最简单的方式是用字符串分割或者截取。比如用split(" submitted")[0]直接拿到前面的部分,或者用正则匹配数字加“ runs”的组合。
下面是完整的代码示例:
import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; public class JsoupExample { public static void main(String[] args) { // 给定的HTML片段 String html = "<i class=\"fa fa-star\"></i> <a href=\"#taskruns\" data-toggle=\"tab\">396900 runs submitted</a>"; // 解析HTML Document doc = Jsoup.parse(html); // 定位到目标a标签 Element linkElement = doc.selectFirst("a[href=#taskruns]"); if (linkElement != null) { // 获取完整文本 String fullText = linkElement.text(); // 提取需要的部分:分割掉" submitted" String targetText = fullText.split(" submitted")[0]; // 输出结果:396900 runs System.out.println(targetText); } else { System.out.println("未找到目标元素"); } } }
如果你想更灵活一点,比如以后文本格式有小变化,也可以用正则表达式来匹配,比如:
import java.util.regex.Matcher; import java.util.regex.Pattern; // ... 前面的代码不变 Pattern pattern = Pattern.compile("(\\d+ runs)"); Matcher matcher = pattern.matcher(fullText); if (matcher.find()) { String targetText = matcher.group(1); System.out.println(targetText); }
这种方式能匹配任意数字加“ runs”的组合,适应性更强。
内容的提问来源于stack exchange,提问作者Zeshan Fayyaz
相关产品推荐
相关产品推荐

