Python Selenium使用XPath获取job-title和href返回空值问题求助
代码存在的问题及修正方案
- find_elements返回值处理错误:
find_elements_by_xpath返回的是符合条件的元素列表,不是单个元素,你在try块中直接把列表赋值给title,没有调用get_attribute方法,自然拿不到属性值。如果确定每个卡片下只有一个job-title链接,应该用find_element_by_xpath(不带s)获取单个元素。 - try-except逻辑完全错误:当前try块里只有查找元素的操作,只要能找到元素就不会进入except分支,获取属性的逻辑永远不会执行。
- 属性获取逻辑错误:你要拿的是a标签的
href属性和job-title属性,一是不能给父级的job(job-info-wrapper div元素)调用get_attribute("a href"),不存在这个属性,必须先定位到a标签再调用属性获取方法;二是你get_attribute传入的job-title属性名带了多余尾部空格,会导致找不到对应属性。 - XPath匹配冗余空格问题:你写的XPath里class值带了不必要的尾部空格(比如
"job-title "最后的空格),如果页面元素class属性没有对应尾部空格,会导致匹配失败。
修正后代码
job_card = driver.find_elements_by_xpath('//div[contains(@class,"job-info-wrapper")]') titles = [] links = [] for job in job_card: try: # 先定位到单个a标签元素 job_a_ele = job.find_element_by_xpath('.//a[contains(@class, "job-title")]') # 获取job-title属性 title = job_a_ele.get_attribute("job-title") titles.append(title) print(title) # 获取href属性 link = job_a_ele.get_attribute("href") links.append(link) except Exception as e: # 单个卡片提取失败可打印异常排查,不影响其他卡片遍历 print(f"单条职位信息提取失败:{e}")
内容的提问来源于stack exchange,提问作者Simon GIS
相关产品推荐
相关产品推荐

