Selenium如何从无类名/ID的ul下的li标签提取文本信息
用Selenium遍历无标识ul下的li并提取div文本
解决方案步骤
- 等待目标ul元素加载完成(避免页面未渲染导致元素找不到)
- 获取该ul下的所有li标签
- 逐个遍历li,提取内部div的文本内容
Python代码示例
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化Chrome浏览器 driver = webdriver.Chrome() driver.get("你的目标网站URL") try: # 等待ul元素出现(超时时间10秒),通过标签名定位 target_ul = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.TAG_NAME, "ul")) ) # 获取ul下所有li元素 li_list = target_ul.find_elements(By.TAG_NAME, "li") # 遍历每个li,提取第一个div的文本 for li in li_list: # 定位li内的第一个div并取文本 div_content = li.find_element(By.XPATH, "./div[1]").text print(div_content) # 也可以把内容存入列表或文件 # result_list.append(div_content) finally: # 关闭浏览器 driver.quit()
注意事项
- 如果页面存在多个ul标签,需要通过父元素定位缩小范围,比如先找到ul的父容器(如果父容器有标识),再从中获取ul:
# 示例:父容器有class为"content-wrap" parent_container = driver.find_element(By.CLASS_NAME, "content-wrap") target_ul = parent_container.find_element(By.TAG_NAME, "ul") - 如果li内有多个div,
./div[1]确保只提取第一个div的文本,对应你示例中的'1,000,000 PPE Solutions' - 若遇到动态加载的内容,可适当延长等待时间,或使用
EC.visibility_of_element_located确保元素可见
内容的提问来源于stack exchange,提问作者Miracle
相关产品推荐
相关产品推荐

