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

Selenium/Python遍历容器div获取信息时重复输出问题求助

问题排查与解决方案

看起来你大概率是在遍历容器的时候,没有限定在当前容器内部查找子元素,而是每次都从整个文档里取第一个匹配的元素,所以才会重复输出"James"。我结合常见场景给你梳理下问题和修复方法:

1. 先模拟错误场景

假设你的HTML结构大概是这样的:

<div class="user-card">
  <div>James</div>
  <div>Smith</div>
  <img src="james-avatar.jpg" alt="James">
</div>
<div class="user-card">
  <div>Harry</div>
  <div>Potter</div>
  <img src="harry-avatar.jpg" alt="Harry">
</div>

如果你的JS代码写成这样,就会出现你遇到的问题:

const containers = document.querySelectorAll('.user-card');
containers.forEach(() => {
  // 错误:每次都从整个文档中获取第一个匹配的元素
  const firstName = document.querySelector('.user-card div:first-child').textContent;
  const lastName = document.querySelector('.user-card div:nth-child(2)').textContent;
  const imgUrl = document.querySelector('.user-card img').src;
  
  console.log(firstName); // 两次都输出James
});

2. 修复后的正确代码

核心是在当前遍历的容器元素内部进行查询,用container.querySelector()替代全局的document.querySelector():

const containers = document.querySelectorAll('.user-card');
containers.forEach(container => {
  // 限定在当前container内查找子元素
  const firstName = container.querySelector('div:first-child').textContent;
  const lastName = container.querySelector('div:nth-child(2)').textContent;
  const imgUrl = container.querySelector('img').src;
  
  console.log(firstName); // 依次输出James、Harry
});

3. 额外注意事项

  • 记得把代码里的.user-card替换成你实际使用的容器选择器(类名/ID/标签)
  • 确保每个容器内部的结构完全一致:第一个div是姓名、第二个是姓氏、img元素在容器范围内
  • 如果用jQuery实现,逻辑类似,要使用$(container).find(selector)而非全局的$(selector)

内容的提问来源于stack exchange,提问作者Mikel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 07:34:28