You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Jsoup解析无ID元素文本失败的技术求助

Jsoup无ID元素提取失败的问题排查与修复

我来帮你梳理下代码里的问题,以及如何修复这个文本提取的问题:

首先看你代码里的几个核心问题:

  • 过于冗长且依赖自动生成标签的选择器:你写的嵌套选择器里反复用到了<tbody>,但很多网站的原始HTML里其实并没有这个标签——它是浏览器渲染时自动添加的。Jsoup解析的是原始HTML,所以依赖<tbody>会直接导致选择器匹配不到任何元素。
  • 错误的索引语法:你用td[2]这种写法,Jsoup会理解为“选择拥有属性2的<td>元素”,而不是“第二个<td>”!要选择第n个元素,应该用:nth-of-type(n)(从1开始计数)或者:eq(n)(从0开始计数),比如第二个<td>应该写成td:nth-of-type(2)或者td:eq(1)。
  • 目标元素选择错误:你示例里的目标文本是直接在<a>标签里的,但代码里却用了tr[1]>td[1]>a>span去查找——如果原始HTML里没有<span>,这个选择器自然拿不到内容。

修正后的代码示例

我调整了选择器,去掉了多余的<tbody>,用正确的索引语法,并且直接定位到目标<a>元素:

package modul_1;

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class fetch_bus_stops {
    public static void main(String[] args) {
        try {
            // 设置更贴近真实浏览器的User-Agent,避免被网站拦截
            Document doc = Jsoup.connect("http://rozklady.mpk.krakow.pl/?lang=PL&rozklad=20180520&linia=1")
                    .userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
                    .get();
            
            // 简化选择器:定位到包含公交站点名称的<a>元素,这里根据目标网站结构调整
            Elements stopLinks = doc.select("table table td:nth-of-type(1) a");
            
            int index = 0;
            for (Element link : stopLinks) {
                index++;
                // 直接提取<a>标签内的文本
                System.out.println(index + " " + link.text());
            }
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

额外调试建议

  1. 用开发者工具确认HTML结构:打开目标网站按F12,查看原始HTML(不要看Elements标签页里浏览器处理后的结构),确认目标元素的真实父容器,避免依赖浏览器自动添加的标签。
  2. 逐步调试选择器:先从简单的选择器开始,比如先用doc.select("a").size()看看能抓到多少链接,再逐步缩小范围,比如doc.select("table a"),直到定位到目标元素。
  3. 检查选择器匹配数量:在循环前可以加System.out.println(stopLinks.size());,如果输出0,说明选择器还是没匹配到元素,需要进一步调整。

内容的提问来源于stack exchange,提问作者Pomme De Terre

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:09:27