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

Selenium Python如何遍历ol内所有li元素并提取对应h2文本

问题核心原因
  • 你的XPath仅定位到了ol容器本身,绝大多数场景下该ol元素在页面中仅存在1个,因此articles_elements列表长度为1,循环仅执行1次,最终只能输出1条结果
  • 你没有定位到ol下的所有li子元素,这是无法获取完整列表的直接原因
修正后可直接运行的代码
# 定位到ol下的所有li元素
articles_list = r'/html/body/main/div/div/section/ol/li'
articles_elements = driver.find_elements_by_xpath(articles_list)

for article in articles_elements:
    # 从当前li节点开始相对路径查找标题
    title = article.find_element_by_xpath('.//div/div/div[2]/div[1]/a[1]/h2').text
    print('Title:' + title)

如果你的页面中ol下前2个li是无效的广告/占位内容(从你给出的XPath示例来看li下标从3开始),可以直接在定位时过滤:

# 仅获取下标大于等于3的li元素
articles_list = r'/html/body/main/div/div/section/ol/li[position()>=3]'
额外优化建议
  • 高版本Selenium已经弃用find_elements_by_xpath写法,推荐使用更规范的API:
    from selenium.webdriver.common.by import By
    articles_elements = driver.find_elements(By.XPATH, articles_list)
    
  • 尽量避免使用超长绝对XPath,优先用class、id等属性做相对定位,页面结构小幅调整时不会直接导致定位失效

内容的提问来源于stack exchange,提问作者Cristian Avendaño

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 20:39:02