Selenium Python获取所有class为wld的div文本报错解决
解决Selenium获取多个元素文本的问题
嘿,这个问题我碰到过不少次!你遇到的AttributeError是因为driver.find_elements()返回的是WebElement对象的列表,而列表本身没有.text属性——只有单个的WebElement才有这个属性。这就是为什么你用driver.find_element()(单数形式)能拿到第一个元素的文本,但用复数形式就报错啦。
直接用Selenium解决的方法
你只需要遍历返回的元素列表,逐个提取每个元素的.text属性就行。这里有两种常用写法:
写法1:列表推导式(简洁高效)
from selenium.webdriver.common.by import By # 获取所有class为wld的元素 match_results = driver.find_elements(By.CSS_SELECTOR, ".wld") # 遍历每个元素,提取文本并存入列表 all_wld_texts = [element.text for element in match_results] # 打印结果 print(all_wld_texts)
写法2:普通循环(适合需要额外处理的场景)
如果需要在提取文本时做一些判断或处理(比如跳过空文本),可以用普通循环:
match_results = driver.find_elements(By.CSS_SELECTOR, ".wld") all_wld_texts = [] for element in match_results: text = element.text # 比如跳过空文本 if text.strip(): all_wld_texts.append(text) print(all_wld_texts)
要不要用BeautifulSoup?
完全不需要!Selenium本身已经帮你定位到了所有目标元素,直接遍历提取文本是最直接的方式。除非你已经获取了页面的HTML源码,想要用BeautifulSoup做更复杂的解析,但在这里没必要多此一举。
内容的提问来源于stack exchange,提问作者the star
相关产品推荐
相关产品推荐

