使用Jsoup解析含span标签的HTML并获取赛事比分的技术咨询
用Jsoup解析赛事网站并获取比分的实现思路
我来帮你梳理下完整的实现步骤和思路,结合你给出的代码拆解说明:
核心步骤拆解
第一步:引入Jsoup依赖
首先得确保你的项目里已经添加了Jsoup的依赖,这样才能使用它的HTML解析能力。
比如Maven项目可以在pom.xml中添加:<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.17.2</version> <!-- 建议使用最新稳定版本 --> </dependency>Gradle项目则在
build.gradle里配置:implementation 'org.jsoup:jsoup:1.17.2'第二步:发起HTTP请求获取页面文档
你的代码里这部分已经写得很清楚了:Document b = Jsoup.connect("https://www.flashscore.ro/meci/CpNbKtrI/#sumar-meci") .timeout(6000) // 设置6秒超时,避免请求长时间挂起无响应 .get();这一步的作用是:通过Jsoup的
connect()方法建立与目标网站的HTTP连接,发送GET请求拿到页面的静态HTML内容,最后封装成Document对象,方便后续的解析操作。第三步:用CSS选择器定位比分元素
这是获取比分的关键步骤,需要精准定位到存放比分的HTML元素:String test2 = b.select("div.event_detail_current_result").text();select("div.event_detail_current_result"):通过CSS选择器定位到class为event_detail_current_result的div元素,这个就是页面上承载实时比分的容器。.text():提取该元素内部的纯文本内容,也就是我们最终要的比分数据。
第四步:输出或处理比分结果
最后把获取到的比分打印出来:System.out.println("This : " + test2);这里也可以根据实际需求,改成将比分存储到数据库、展示到前端页面等其他操作。
额外注意事项
- 网站结构变更风险:这类体育赛事网站的页面结构可能会不定期调整,如果之后发现获取不到比分,要重新检查页面的HTML结构,更新对应的CSS选择器。
- 反爬机制应对:部分网站会拦截无标识的请求,建议在请求时添加User-Agent头,模拟浏览器的正常请求:
Document b = Jsoup.connect("https://www.flashscore.ro/meci/CpNbKtrI/#sumar-meci") .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36") .timeout(6000) .get(); - 动态内容处理:如果比分是通过JavaScript动态加载的,Jsoup就无法直接获取到(因为Jsoup只能解析静态HTML),这时候可能需要搭配Selenium等工具来处理动态渲染的页面。
内容的提问来源于stack exchange,提问作者Escape
相关产品推荐
相关产品推荐

