You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium爬取Glassdoor薪资预估返回空值问题求助

Glassdoor薪资预估爬取失败的排查与解决方法

常见问题原因及修复方案:

  • CSS类名动态失效
    Glassdoor的前端类名(如css-18034rf)是动态生成的,固定写死很容易过期。换用更稳定的定位逻辑:

    • 结合薪资的符号特征(比如$、₹)和不变的类后缀定位:
      xpath = './/span[contains(text(), "$") or contains(text(), "₹") and contains(@class, "e1wijj242")]'
      
    • 先定位职位卡片容器,再嵌套查找薪资元素:
      # 先找职位卡片
      job_card = driver.find_element(By.XPATH, './/div[@class="css-17x2pwl e11nt52q5"]')
      # 再在卡片内找薪资
      salary_elem = job_card.find_element(By.XPATH, './/span[contains(@class, "e1wijj242")]')
      
  • 元素加载未完成
    Selenium执行太快,元素还没渲染出来就触发查找,导致失败。添加显式等待:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    
    try:
        # 最多等10秒,直到元素可见
        salary_elem = WebDriverWait(driver, 10).until(
            EC.visibility_of_element_located((By.XPATH, './/span[contains(@class, "e1wijj242")]'))
        )
        salary_estimate.append(salary_elem.text)
    except:
        salary_estimate.append("#N/A")
    
  • 元素在iframe中
    检查页面是否把薪资元素放在iframe里,如果是,必须先切换iframe再查找:

    # 定位并切换到目标iframe
    iframe = driver.find_element(By.XPATH, '//iframe[contains(@src, "salary")]')
    driver.switch_to.frame(iframe)
    # 执行薪资查找操作...
    # 操作完成切回主页面
    driver.switch_to.default_content()
    
  • 反爬机制拦截
    Glassdoor反爬严格,可能识别Selenium并隐藏元素:

    • 模拟真实用户UA:
      from selenium.webdriver.chrome.options import Options
      
      options = Options()
      options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")
      driver = webdriver.Chrome(options=options)
      
    • 提前登录账号,保存cookie后加载,绕过登录限制。

内容的提问来源于stack exchange,提问作者Edinaldo Almeida

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.25 20:43:34