游乐游手机版
首页/前端开发/文章详情

如何通过Kununu官方API稳定获取完整员工评价与评分数据

时间:2026-08-17 13:30
本文将系统讲解如何绕过 Kununu 页面动态加载带来的采集限制,直接调用其后端 REST API 进行分页抓取,从而稳定获取全部员工评价数据,包括完整评论文本、评分、发布时间等关键信息,避免使用 Selenium 点击“查看更多”时出现的 JSON 数据不同步或滞后问题。 本文将系统讲解如何绕过

本文将系统讲解如何绕过 Kununu 页面动态加载带来的采集限制,直接调用其后端 REST API 进行分页抓取,从而稳定获取全部员工评价数据,包括完整评论文本、评分、发布时间等关键信息,避免使用 Selenium 点击“查看更多”时出现的 JSON 数据不同步或滞后问题。

如何通过 Kununu 官方 API 稳定抓取完整员工评价与评分数据

本文将系统讲解如何绕过 Kununu 页面动态加载带来的采集限制,直接调用其后端 REST API 进行分页抓取,从而稳定获取全部员工评价数据,包括完整评论文本、评分、发布时间等关键信息,避免使用 Selenium 点击“查看更多”时出现的 JSON 数据不同步或滞后问题。

Kununu 的评论页面(例如 https://www.kununu.com/de/adidas/kommentare)采用的是典型的客户端动态渲染配合服务端分页加载机制:初始 HTML 中嵌入的 #__NEXT_DATA__ JSON 通常只包含首屏内容,一般为前 10 条评论;后续评论则通过 Ajax 异步请求继续加载,而这些新增请求并不会自动回写或更新 #__NEXT_DATA__ 中的内容——这正是你会遇到“BeautifulSoup 已经能读取展开后的页面内容,但 JSON 数据始终只有 10 条”的核心原因。

相较于不够稳定、且容易被反爬策略打断的浏览器自动化点击方案(例如 show_more_reviews(driver, 2)),更推荐的做法其实是直接分析并调用 Kununu 内部评论 API 接口。这套接口设计相对规范,返回的 JSON 结构也比较清晰,同时无需登录,也没有复杂鉴权等额外限制。因此,对于需要批量抓取 Kununu 员工评价、追求稳定性和可维护性的任务来说,这种方式明显更高效、更适合长期使用。

✅ 正确做法:直连评论 API,分页抓取全量员工评价数据

首先,需要从页面中提取企业唯一标识 ID(也就是 URL 中的 company-id)。Kununu 会将这个 ID 隐藏在任意一条评论链接中(例如 ),可以借助 BeautifulSoup 快速完成解析:

from bs4 import BeautifulSoup
import requests

url = "https://www.kununu.com/de/adidas/kommentare"
soup = BeautifulSoup(requests.get(url).content, "html.parser")
# 提取 company ID(位于任意评论链接的第5段路径)
id_ = soup.select_one('a[href*="/review/"]')["href"].split("/")[5]

接下来,就可以拼接 API 请求地址和对应参数。Kununu 评论接口通常采用以下固定格式:
https://www.kununu.com/middlewares/profiles/{country}/{company-slug}/{company-id}/reviews

关键参数说明如下:

完整示例(抓取前 2 页,共 20 条 Kununu 评论):

api_url = "https://www.kununu.com/middlewares/profiles/de/adidas/{id_}/reviews"

params = {
"fetchFactorScores": "0",
"reviewType": "employees",
"urlParams": "",
"page": "1",
}

for page in range(1, 3):# 可扩展至所需页数,如 range(1, 6) 获取前50条
params["page"] = str(page)
response = requests.get(api_url.format(id_=id_), params=params)
response.raise_for_status()
data = response.json()

for review in data.get("reviews", []):
# 提取核心字段
rating = review.get("rating", 0)# 总体评分(1–5)
date = review.get("date", "")
author_role = review.get("role", "")

# 逐段提取评论正文(支持多段文本,如“优点”“缺点”“建议”)
texts = []
for text_obj in review.get("texts", []):
if text_obj.get("text"):
texts.append(text_obj["text"].strip())

print(f"[评分: {rating}] [{date}] {author_role}")
print("n".join(texts))
print("-" * 80)

⚠️ 注意事项与优化建议

通过这种方法,你可以彻底摆脱 Selenium 渲染延迟、按钮点击失败和 DOM 同步困难等问题,以更轻量、更高效、更易维护的方式稳定获取 Kununu 全量结构化员工评论与评分数据。

来源:https://www.php.cn/faq/2996852.html
上一篇CSS设置透明度为何会影响子元素层叠上下文 下一篇Vue请求封装中如何实现带优先级的队列请求管理机制
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
CSS3入门指南:常用特性解析与实战练习路径
前端开发 · 2026-09-01

CSS3入门指南:常用特性解析与实战练习路径

CSS3是现代网页开发的核心技术,涵盖圆角、阴影、渐变、过渡、动画及响应式布局等高频特性。本文梳理了CSS3的核心应用场景、分步学习路径与综合练习案例,帮助初学者快速建立从基础排版到现代交互的完整开发思路,并规避常见样式陷阱。

CSS border 边框属性详解:语法、拆分写法与常见问题排查
前端开发 · 2026-09-01

CSS border 边框属性详解:语法、拆分写法与常见问题排查

本文系统讲解CSS标准边框属性border的完整语法结构,涵盖简写与拆分写法、单边控制技巧及border-radius配合方案。针对边框不显示、元素尺寸异常等高频问题提供排查路径,帮助开发者快速掌握边框设置规范并提升界面视觉一致性。

CSS3动画属性有哪些:常用属性与用法说明
前端开发 · 2026-09-01

CSS3动画属性有哪些:常用属性与用法说明

CSS3动画主要分为transition过渡与animation关键帧两类。本文梳理常用属性、简写语法与@keyframes规则,结合悬停、入场、循环等场景给出代码示例与选型建议,帮助开发者快速写出流畅且可控的动画效果。

CSS3渐变色语法与常见用法
前端开发 · 2026-09-01

CSS3渐变色语法与常见用法

CSS3渐变色通过纯代码生成平滑颜色过渡,广泛用于按钮、横幅与卡片背景。本文系统梳理线性与径向渐变的核心语法、方向控制、停靠点设置及多层叠加技巧,提供可直接复用的场景代码,并给出兼容性策略与常见渲染异常排查方法,帮助开发者快速构建稳定、可维护的渐变样式。

CSS3手册中文版下载指南:获取渠道、筛选标准与使用建议
前端开发 · 2026-09-01

CSS3手册中文版下载指南:获取渠道、筛选标准与使用建议

寻找CSS3手册中文版下载资源时,如何判断来源可靠性、筛选高质量内容并有效使用?本文从获取渠道、版本识别、下载验收到替代方案,提供一套可执行的判断标准,帮助你快速找到适合学习或查阅的中文手册。