Selenium中如何查找<li class>标签及截图内的标题元素列表
Selenium定位带class属性的标签及截图中标注标题列表的方法
一、通用定位带class属性的
下面是几种常用的定位方式,你可以根据实际场景选择:
CSS选择器(推荐):
直接通过「标签名+class名」的组合定位,语法是li.你的class名。比如要定位class为title-item的- ,代码如下:
from selenium.webdriver.common.by import By # 定位单个元素 single_li = driver.find_element(By.CSS_SELECTOR, "li.title-item") # 定位所有符合条件的元素 all_lis = driver.find_elements(By.CSS_SELECTOR, "li.title-item")优点是语法简洁,执行速度快,适合大多数场景。如果
- 的class有多个值,比如
class="title-item active",这个写法依然有效,因为CSS选择器会匹配包含该class的元素。 XPath定位:
分精确匹配和包含匹配两种情况:- 精确匹配class值:当你需要完全匹配class的内容时,用
//li[@class='你的class名'] - 包含匹配class值:当class有多个值,只需要匹配其中一个时,用
//li[contains(@class, '你的class名')]
代码示例:
# 精确匹配 single_li = driver.find_element(By.XPATH, "//li[@class='title-item']") # 包含匹配 all_lis = driver.find_elements(By.XPATH, "//li[contains(@class, 'title-item')]")- 精确匹配class值:当你需要完全匹配class的内容时,用
二、针对截图中标注的标题元素列表的定位方法
从截图来看,目标标题列表是嵌套在特定容器内的
定位所有包含标题的
- 元素
假设截图中的 - 带有
question-summary这个class,我们可以用CSS选择器先定位所有这类 - ,同时加入显式等待避免页面未加载完全的问题:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC wait = WebDriverWait(driver, 10) title_items = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "li.question-summary"))) 提取每个
- 中的标题文本
每个标题文本通常在 - 下的标签里,遍历已定位的
- 即可逐个提取标题:
title_list = [] for item in title_items: title_link = item.find_element(By.CSS_SELECTOR, "a.question-hyperlink") title_list.append(title_link.text) # 输出所有标题 print(title_list)
如果实际页面的class名和结构有差异,只需要替换代码中的class名称即可。
内容的提问来源于stack exchange,提问作者Syed Mazhar Ali
相关产品推荐
相关产品推荐

