使用Python和Selenium获取span标签文本时元素定位报错求助
问题排查与解决方案
存在的问题
- XPath选择器和实际HTML结构完全不匹配:你定位的
h2标签class属性为title,但目标HTML中h2的class是jobTitle jobTitle-color-purple,属性值不一致导致找不到元素。 - 标签层级匹配错误:你在
h2下查找a标签,但实际h2下的子元素是span标签,不存在a标签,必然触发找不到元素的报错。 - 首段try逻辑中的
td标签和a标签在你提供的HTML结构中完全不存在,所以一定会进入except分支,继续触发后续错误。
正确获取方法
根据需求可以分两种场景获取内容:
- 获取span标签的
title属性值(即Director) - 获取span标签的文本内容(即
Director=)
旧版本Selenium(支持find_element_by_xpath的版本)
# 获取title属性值 title = job.find_element_by_xpath('.//h2[contains(@class,"jobTitle")]/span').get_attribute("title") # 如需获取文本内容则替换为: # title = job.find_element_by_xpath('.//h2[contains(@class,"jobTitle")]/span').text
XPath中用contains(@class,"jobTitle")是为了匹配多class属性的标签,避免因为class有多个值导致匹配失败。
新版本Selenium(已弃用find_element_by_*系列方法)
需要先导入By模块:
from selenium.webdriver.common.by import By
对应获取代码:
# 获取title属性值 title = job.find_element(By.XPATH, './/h2[contains(@class,"jobTitle")]/span').get_attribute("title") # 如需获取文本内容则替换为: # title = job.find_element(By.XPATH, './/h2[contains(@class,"jobTitle")]/span').text
内容的提问来源于stack exchange,提问作者Simon GIS
相关产品推荐
相关产品推荐

