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

如何从Google Jobs抓取评分数据?请求无评分区域问题排查

问题描述

我正在为Google Jobs开发网页爬虫,使用Python的requests库和BeautifulSoup4工具。发送GET请求获取URL对应的HTML并解析后,无法找到职位页面中**ratings(评分)**区域的HTML内容——该区域在浏览器开发者工具中可见,但写入本地的index.html文件里完全没有这部分内容。

当前实现代码:

res = requests.get(url, headers={"User-Agent": "..."})
site = res.text

content = bs4.BeautifulSoup(site, 'html.parser')

# 'pE8vnd avtvi'是包含整个职位详情页的div元素的class
vals = content.find_all('div', class_ = 'pE8vnd avtvi')
    
with open('./index.html', 'w') as f:
   f.write(vals[0])

尝试更换不同职位索引写入文件,输出始终不包含评分区域的div,请问我遗漏了什么?


原因及解决办法

  • 动态渲染导致内容缺失:评分区域是通过JavaScript动态加载的,requests库只能获取页面的初始静态HTML,无法执行JS代码,所以这部分内容不会出现在返回的源码里。而浏览器会在加载初始HTML后,自动发送额外请求获取评分数据并渲染到页面上,因此开发者工具能看到完整内容。
  • 可行的解决思路:
    1. 使用浏览器自动化工具:借助Selenium或Playwright模拟真实浏览器的加载过程,等JS渲染完成后再抓取页面源码。示例代码(Selenium):
      from selenium import webdriver
      from selenium.webdriver.support.ui import WebDriverWait
      from selenium.webdriver.support import expected_conditions as EC
      from selenium.webdriver.common.by import By
      import bs4
      
      # 初始化浏览器驱动(需提前下载对应浏览器的驱动)
      driver = webdriver.Chrome()
      driver.get(url)
      
      # 等待评分区域元素加载完成,替换成实际的评分区域元素选择器
      WebDriverWait(driver, 10).until(
          EC.presence_of_element_located((By.CLASS_NAME, "替换为评分区域的class"))
      )
      
      # 获取渲染后的完整页面源码
      site = driver.page_source
      content = bs4.BeautifulSoup(site, 'html.parser')
      vals = content.find_all('div', class_='pE8vnd avtvi')
      
      with open('./index.html', 'w') as f:
          f.write(str(vals[0]))
      
      driver.quit()
      
    2. 直接调用后端API接口:打开浏览器开发者工具的「网络」面板,筛选XHR/Fetch请求,找到加载评分数据的API接口,直接用requests调用该接口获取原始数据,这种方式比模拟浏览器更高效。注意要带上请求头中的必要参数(如Cookie、User-Agent等),避免被反爬机制拦截。
  • 反爬注意事项:Google Jobs有严格的反爬策略,频繁请求可能会触发IP封禁。建议添加请求间隔、使用代理IP,并且确保爬虫行为符合Google的服务条款。

内容的提问来源于stack exchange,提问作者Ebube Okoli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 04:00:04