You need to enable JavaScript to run this app. Selenium Java从多层div提取数据时图片内容重复输出问题求助
优惠活动
大模型
产品
解决方案
定价
更多

Selenium Java从多层div提取数据时图片内容重复输出问题求助

代码错误说明及修复方案

错误原因

  • XPath查询范围错误:在当前元素e下调用findElements时,使用开头为//的XPath会从整个HTML文档根节点检索,不是限定在e的子节点范围内,因此每次循环都拿到页面第一个匹配的图片元素,导致图片链接重复。
  • num字段取值逻辑错误:代码中urls.get(0).getAttribute("this_is_num")固定取列表第一个元素的num属性,属于逻辑隐患,后续列表变更会直接导致num取值错误。
  • 空指针隐患:未校验元素列表是否为空就直接取get(0),匹配不到元素时会直接抛出异常。

修复代码

public static void get_Data_() throws IOException {
        List<WebElement> urls = driver.findElements(By.cssSelector("this_is_container_div"));

        for(WebElement e: urls) {
            // 路径开头加. 限定在当前元素e内部搜索
            List<WebElement> img_html = e.findElements(By.xpath(".//my_img_xpath"));
            List<WebElement> title_html = e.findElements(By.cssSelector(".my_title_selector"));
            // 改为取当前循环元素e的属性
            String num = e.getAttribute("this_is_num");
            String title = title_html.isEmpty() ? "" : title_html.get(0).getText();
            String image = img_html.isEmpty() ? "" : img_html.get(0).getAttribute("src");
            System.out.println( num +" " +title+" "+image);
        }
}

内容的提问来源于stack exchange,提问作者e-Tester

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.21 16:06:06