如何用Python Selenium ChromeDriver提取HTML中的61和70%文本值?
解决WebDriver提取span标签内特定值的问题
方法1:直接定位单个span元素
针对你需要的两个值,可通过XPath直接定位对应的span子元素:
- 提取数值61:
value_61 = driver.find_element_by_xpath("//p[@class='stock-score tykr-score-box']/span[1]").text - 提取百分比70%:
value_70 = driver.find_element_by_xpath("//p[@class='stock-score tykr-score-box']/span[2]").text
方法2:先定位父元素再遍历子span
如果需要一次性获取两个值,可先定位父级p标签,再获取其下所有span子元素:
# 定位父级p元素 score_box = driver.find_element_by_xpath("//p[@class='stock-score tykr-score-box']") # 获取所有子span标签 span_elements = score_box.find_elements_by_tag_name("span") # 提取对应值 value_61 = span_elements[0].text value_70 = span_elements[1].text
优化建议:添加显式等待
为避免页面加载未完成导致的元素找不到报错,建议配合显式等待使用:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.common.by import By # 等待父元素加载完成(最长等待10秒) score_box = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, "//p[@class='stock-score tykr-score-box']")) ) span_elements = score_box.find_elements_by_tag_name("span") value_61 = span_elements[0].text value_70 = span_elements[1].text
补充说明
如果目标span标签有专属class属性,可替换XPath为更精准的定位方式,例如:
- 若61所在span的class为
score-num,则定位XPath为//p[@class='stock-score tykr-score-box']/span[@class='score-num']
内容的提问来源于stack exchange,提问作者SudipM
相关产品推荐
相关产品推荐

