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

Python Selenium如何抓取两个h3标签间div下的所有li元素

解决Selenium抓取h3对应下方li的问题

你的问题出在XPath的范围控制上,当前代码会抓取当前h3之后所有同级privacy-type__grid容器里的li,而不是仅当前h3对应的那部分。以下是两种可行的解决方案:

方案一:定位父容器(推荐)

观察页面结构,每个h3和它对应的li容器privacy-type__grid都包裹在同一个privacy-type父元素里。直接定位这些父元素,就能精准获取每个h3对应的li:

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

# 定位所有隐私项的父容器
privacy_items = WebDriverWait(driver, 15).until(
    EC.presence_of_all_elements_located((By.XPATH, "//div[@class='privacy-type']"))
)

for item in privacy_items:
    # 获取当前项的h3文本
    h3_text = item.find_element(By.XPATH, ".//h3[@class='privacy-type__purpose-heading']").text
    print(h3_text)
    # 获取当前项内的所有li
    li_tags = item.find_elements(By.XPATH, ".//div[@class='privacy-type__grid']/descendant::li")
    for li in li_tags:
        print(li.text)
    print('-----------------------')

方案二:修改XPath范围

如果不想改变定位逻辑,可以修改XPath,限制只抓取当前h3之后、下一个h3之前的li:

h3_tags = WebDriverWait(driver, 15).until(
    EC.presence_of_all_elements_located((By.XPATH, "//h3[@class='privacy-type__purpose-heading']"))
)

for i in range(len(h3_tags)):
    current_h3 = h3_tags[i]
    if i < len(h3_tags) - 1:
        # 非最后一个h3:只取到下一个h3之前的div里的li
        li_xpath = "./following-sibling::div[@class='privacy-type__grid'][following-sibling::h3[@class='privacy-type__purpose-heading'][1] = following-sibling::h3[@class='privacy-type__purpose-heading'][{}]]/descendant::li".format(i+2)
    else:
        # 最后一个h3:取所有后续div里的li
        li_xpath = "./following-sibling::div[@class='privacy-type__grid']/descendant::li"
    li_tags = current_h3.find_elements(By.XPATH, li_xpath)
    
    print(current_h3.text)
    for li in li_tags:
        print(li.text)
    print('-----------------------')

方案一利用页面的天然结构分组,逻辑更清晰也更稳定,避免了XPath范围判断的复杂逻辑,优先推荐使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:30:49