携程 & Trip.com 酒店评论数据抓取工具
无需 API、无需登录、无需自建反爬,批量提取携程(Ctrip)和 Trip.com的酒店评论数据。一次运行即可同时覆盖两个平台,输出干净的结构化 JSON / CSV,直接用于分析、AI 与市场研究。
能抓取哪些字段
每条评论包含 24 个字段,涵盖酒店声誉与竞品分析所需的核心数据:
- 总评分与分项子评分(清洁度、位置、服务、设施等)
- 评论正文与英文翻译(
reviewText与reviewTextTranslated) - 房东 / 酒店回复(
ownerResponse) - 入住类型、房型、入住月份(商务 / 家庭 / 情侣等)
- 评论者信息:等级、IP 归属地、语言
- 来源标记(
source):区分每条评论来自携程还是 Trip.com
典型用途
- 酒店声誉管理:集中监控携程 / Trip.com 上的中文客评与评分变化
- 竞品与市场分析:对比同商圈酒店的评分、客群与痛点
- AI / RAG 数据源:结构化评论直接导入向量库与大模型问答流程
- 跨境酒店集团:补齐国际声誉平台常缺失的中国 OTA 评论覆盖
如何使用
零代码:打开 Apify 上的携程 / Trip.com 评论抓取工具,粘贴酒店页面链接,点击运行,几十秒后即可在 Output 标签下载 JSON / CSV / Excel。新账户可用 Apify 的 5 美元免费额度试跑(约 1,250 行)。
API / Python:通过 apify-client 以编程方式调用同一个 Actor,可定时运行并将结果推送到数据库或数据仓库。
价格
按结果计费:每 1,000 条评论 $4(Business 档降至每 1,000 条 $2.50),无启动费、无订阅,仅按实际抓取量付费。
为什么自己抓取携程和 Trip.com 很难
- 没有公开的评论 API。携程集团不对外提供,因此抓取公开页面是唯一途径。
- 这是两套系统,不是一套。
trip.com(国际)和hotels.ctrip.com/ 携程(国内)的结构和语言都不同;为其中一个写的爬虫通常抓不到另一个,而携程的评论池往往更大。 - 中文评论需要翻译才能进入英文分析流程,这是额外的一步。
- 反爬和频率限制在两端都存在。
三种获取方式
| 自己用 Python | 携程 / Trip.com Actor | 官方 API | |
|---|---|---|---|
| 搭建时间 | 数小时到数天 | 约 30 秒 | 无(没有公开评论 API) |
| 同时抓两端 | 需写两个爬虫 | 一次运行 | 不适用 |
| 中文评论翻译 | 需自己加翻译 | 内置 | 不适用 |
| 子评分 + 酒店回复 | 解析嵌套结构 | 支持 | 不适用 |
| 成本 | 代理 + 人力 | 按结果计费 | 不适用 |
| 适合场景 | 一次性抓取 | 定时、规模化 | 不是可选项 |
方案 A:用 Python 自己抓
直接请求酒店页面,通常拿到的是被拦截或只有 JavaScript 外壳的页面:
import httpx
url = "https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/"
r = httpx.get(url, headers={"User-Agent": "Mozilla/5.0"})
print(r.status_code) # 挑战页 / JS 外壳,评论不在 HTML 里
评论通过内部接口加载,需要逐个站点逆向接口、统一两套返回结构、再翻译中文。抓一家酒店可以,定时抓一批就很累。
方案 B:用 API 一次搞定两端
通过 apify-client 调用同一个 Actor,一次运行同时读取两端,并返回已翻译好的结构化 JSON:
from apify_client import ApifyClient
client = ApifyClient("<你的_APIFY_TOKEN>")
run = client.actor("factden/ctrip-trip-reviews-scraper").call(run_input={
"startUrls": [
"https://www.trip.com/hotels/macau-hotel-detail-344983/galaxy-hotel/",
"https://hotels.ctrip.com/hotels/1286148.html"
],
"maxReviewsPerHotel": 200,
"sortBy": "mostRecent",
})
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
print(review["source"], review["overallRating"], review["travelType"])
两种链接可以混在一起传入;sortBy 支持 mostRelevant / mostRecent / ratingHighToLow / ratingLowToHigh,还可用 fromDate / toDate 与 minRating / maxRating 限定范围。
示例数据(携程中文评论,已翻译)
{
"source": "ctrip",
"hotelName": "银河酒店",
"overallRating": 5,
"ratingLabel": "超棒",
"subRatings": ["清洁: 5.0", "位置: 5.0", "服务: 5.0", "设施: 5.0"],
"language": "zh",
"reviewText": "酒店很棒,服务一流,位置方便。",
"reviewTextTranslated": "Great hotel, first-class service, convenient location.",
"isMachineTranslated": true,
"travelType": "家庭",
"ownerResponse": {"text": "感谢您的正面评价...", "date": "2026-06-15"}
}
常见问题
- 抓取携程或 Trip.com 合法吗?
- 评论是公开可见的。和任何抓取一样,请遵守网站服务条款和当地法规(尤其是个人信息相关规定),合理使用数据。
- 携程 / Trip.com 有官方评论 API 吗?
- 没有面向公众的。抓取公开页面是大多数团队的唯一途径。
- 中文评论能拿到英文翻译吗?
- 可以。携程评论附带
reviewTextTranslated和isMachineTranslated标记,同时保留原文。 - 可以一次同时抓取 Trip.com 和携程吗?
- 可以,这正是重点。把两种链接混在一起传入,输出使用同一套结构,并用
source字段标注来源。 - 如何避免被封禁?
- 使用住宅代理、放慢请求频率,或使用能按站点读取内部接口的工具。普通请求会被挑战拦截。
想先看数据样本? 下载 免费的携程 / Trip.com 评论数据样本(216 条真实评论,24 个字段),或直接 运行在线工具抓取任意酒店的最新评论。
English version: How to scrape Trip.com & Ctrip hotel reviews.