Python Selenium Webdriver如何只提取表格中到C. Kelly为止的名字
问题根因
- 核心错误是你直接将Selenium获取的
WebElement元素对象和字符串做相等判断,二者类型完全不同,判断条件永远不成立,break语句始终无法触发,所以会输出所有名字 - 匹配的人名大小写错误,目标人名是C. Kelly,你的判断条件写的是
C. kelly,首字母小写会导致匹配失败 - 执行顺序错误:你先做匹配判断,再取出元素的文本内容,逻辑顺序颠倒,就算类型匹配也无法正常判断
修复后的代码(最小改动版本)
from selenium import webdriver import time driver = webdriver.Chrome(executable_path="C:/chromedriver") driver.get("https://www.seleniumeasy.com/test/") driver.maximize_window() time.sleep(5) driver.find_element_by_xpath("//a[text()='No, thanks!']").click() driver.find_element_by_xpath("//a[contains(text(),'Table')]").click() driver.find_element_by_xpath("//a[contains(text(),'Table Sort & Search')]").click() time.sleep(10) FullName = driver.find_elements_by_xpath("//td[@class='sorting_1']") for Names in FullName: # 先取出元素文本再做判断 current_name = Names.text.strip() if current_name == "C. Kelly": break print(current_name)
优化建议(可选)
- 强制等待
time.sleep()稳定性差,可替换为Selenium的显式等待WebDriverWait,根据元素加载状态判断等待时间,避免等待时间不足或浪费 - 匹配人名时可统一转为大小写后再判断,避免因为网页内容大小写波动导致匹配失败,比如
if current_name.lower() == "c. kelly":
内容的提问来源于stack exchange,提问作者Anshul Thakur
相关产品推荐
相关产品推荐

