Selenium爬取招聘信息:获取Job Scope后元素文本失败问题
问题解决方案
1. 修正XPath定位逻辑
原XPath无法匹配目标div,因为“Job Scope”文本嵌套在div的子元素<b>中,需调整定位规则:
.//div[b[contains(text(), 'Job Scope')]]/following-sibling::div[1]
- 开头的
.限定在当前job元素的上下文内查找,避免全局匹配 div[b[contains(text(), 'Job Scope')]]精准定位包含“Job Scope”文本b标签的父divfollowing-sibling::div[1]获取该div的紧邻第一个后续div
2. 调整代码处理元素列表
find_elements返回元素列表,直接调用.text会报错,需先判断元素存在再提取文本。修改后的代码示例:
job_description = [] job_descriptions = WebDriverWait(browser, 10).until(EC.presence_of_all_elements_located((By.ID,"gnewtonJobDescriptionText"))) for job in job_descriptions: # 用find_element获取单个匹配元素(符合紧邻后续div的需求) try: target_div = job.find_element(By.XPATH, ".//div[b[contains(text(), 'Job Scope')]]/following-sibling::div[1]") job_description.append(target_div.text.strip()) except NoSuchElementException: # 处理元素未找到的场景,可按需调整 job_description.append("")
3. 额外优化建议
- 若目标元素是动态加载,改用
EC.visibility_of_all_elements_located替代presence_of_all_elements_located,确保元素可见后再提取文本 - 若页面存在多个“Job Scope”模块,可保留
find_elements并遍历处理所有匹配的紧邻div
内容的提问来源于stack exchange,提问作者ndp4949
相关产品推荐
相关产品推荐

