如何通过Selenium的CSS选择器提取指定div类的文本?
问题解决思路
首先明确:你问的两种写法全错,Selenium里根本没有texts()这个方法,不管是元素对象还是元素列表都用不了。
原代码的问题
你用driver.find_elements()拿到的是一个元素列表,直接把这个列表加入outer_TextData毫无意义,而且如果元素没加载完成、定位选择器有误,就会抛出你遇到的异常。
正确的写法
要提取目标div的文本,得先确保元素加载完成,再逐个获取文本:
- 等待元素加载+批量提取文本(适合多个目标元素的场景)
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待最多10秒,直到所有目标元素加载完成 wait = WebDriverWait(driver, 10) text_elements = wait.until(EC.presence_of_all_elements_located((By.CSS_SELECTOR, "div.review-contents__text"))) # 遍历元素列表,把每个元素的文本存入数组 for elem in text_elements: outer_TextData.append(elem.text)
- 单个元素提取(确定页面只有一个目标div时用)
text_element = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.review-contents__text"))) outer_TextData.append(text_element.text)
额外注意点
你原代码里的CSS选择器div.review-contents > div.review-contents__text加了父元素限制,如果页面里目标div的父元素不是div.review-contents,或者层级关系不对,会导致定位失败。如果直接用div.review-contents__text就能定位到目标元素,建议简化选择器,避免不必要的层级限制。
内容的提问来源于stack exchange,提问作者Null물을 흘린다
相关产品推荐
相关产品推荐

