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

遍历元素组提取子元素时仅获首个元素的问题求助

问题解决:遍历所有person元素获取数据

可能的原因

你的代码只获取到第一个person数据,大概率是元素未完全加载导致的——当你调用find_elements_by_class_name时,页面后面的person元素还没渲染完成,只能拿到已加载的第一个。另外,find_elements_by_class_name属于旧版API,已被Selenium弃用,也可能存在兼容性问题。

修正后的代码

首先导入Selenium等待模块,确保所有元素加载完成后再遍历:

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By

persons = []
# 等待最多10秒,直到所有person元素都加载完成
wait = WebDriverWait(driver, 10)
person_elements = wait.until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'person')))

for person in person_elements:
    # 改用CSS选择器定位,更简洁且稳定
    title = person.find_element(By.CSS_SELECTOR, '.title a').text
    company = person.find_element(By.CSS_SELECTOR, '.company a').text
    persons.append({'title': title, 'company': company})

# 输出期望格式的结果
for item in persons:
    print(f"{item['title']}, {item['company']}")

额外优化建议

  • 如果你坚持使用XPath,确保相对路径正确且引号使用规范(避免转义错误),示例:
    title = person.find_element(By.XPATH, './/div[@class="title"]/a').text
    
  • 如果页面是滚动加载更多person元素的动态页面,需要先滚动页面到底部,确保所有目标元素都被渲染出来。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:45:39