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

Python Selenium如何从长度不定、相对XPath相同的多个HTML列表提取元素

解决方案

Selenium 的WebElement对象本身支持上下文查找,你无需拼接绝对XPath,直接在已获取的ul元素上执行相对路径查询即可:

# 第一步获取所有符合条件的ul列表
ul_nodes = driver.find_elements(By.XPATH, "//div[contains(@class,'list') and h1/text()='Values']/ul[@class='bullet-list']")

nested_li_result = []
for ul in ul_nodes:
    # 以.开头的XPath代表从当前节点开始查询,属于纯相对路径
    li_nodes = ul.find_elements(By.XPATH, "./li")
    # 收集当前ul下的所有li文本
    current_li_texts = [li.text for li in li_nodes]
    nested_li_result.append(current_li_texts)

最终得到的nested_li_result是二维数组,每个子数组对应一个ul列表下的所有条目,自动区分了列表项的所属来源。

注意事项

  1. 相对路径开头的.不可省略,否则会默认从整个文档根节点开始查询,失去上下文查找的意义
  2. 你原有示例代码中的b_list需要在每次遍历ul前重置,否则会把所有列表的条目都累加进同一个数组,导致最终结果重复

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 09:45:01