一年跑 24 万次 Google 搜索采集,我用 4 种方案算了笔明细账(附压测数据)

本文不接任何厂商广告,所有 API 额度均为作者自费购买。出于篇幅,压测原始日志已脱敏开源,文末有仓库链接。

写在前面

团队最近要把一套舆情监控的采集层重构。需求很朴素:每天稳定采集约 8000 个 Google 关键词的 Top30 结果,月请求量 24 万次左右

选型会上吵了三天,最后我拍板:别吵了,四套方案我都实测一遍,用数据说话

这篇文章就是这次实测的完整记录。我会把成本明细、成功率、延迟、接入工作量四个维度全部摊开,包括那些"选型 PPT 里不会写的隐性成本"。

涉及的四套方案:

方案 说明
A. 自建爬虫 Scrapy + 住宅代理池 + Playwright 渲染
B. SerpApi 老牌商业 API,月费订阅制
C. DataForSEO 企业级,字段最全
D. SerpBase 按量付费新锐

一、测试方法

为了保证公平,四套方案用同一批关键词、同一套测试脚本、同一时间段跑:

  • 关键词集:8000 个,混合技术词(30%)、商业词(40%)、长尾词(30%)
  • 每个方案 :每词采 Top30,每天 1 轮,连续 14 天
  • 总请求量/家:约 11.2 万次
  • 统一参数gl=us, hl=en
  • 网络环境:阿里云 ECS(4C8G,美西节点)

成功率 = HTTP 200 且 organic 数组非空且字段完整;延迟统计基于客户端计时。

二、成本明细(最核心的一张表)

这是大多数人选型时最关心的,也是最容易算错的。我把显性成本和**隐性成本(人力折算)**分开列。

按月 2 万次请求的典型负载算:

成本项 A 自建 B SerpApi C DataForSEO D SerpBase
代理/流量费 ¥350 --- --- ---
API 费用 --- ¥3600($50/月订阅) ¥216($0.6/千次×2万) ¥36($0.50/千次×2万)
服务器 ¥140 ¥35 ¥35 ¥35
验证码识别 ¥60 --- --- ---
维护人力(折算) ¥1080(约6h/周) ¥72(约0.4h/周) ¥108(约0.6h/周) ¥108(约0.6h/周)
全成本合计/月 ¥1690 ¥3707 ¥359 ¥179
折算单次成本 ¥0.085 ¥0.185 ¥0.018 ¥0.009

⚠️ 关于"人力折算":这是这份表里争议最大的一项。自建爬虫的维护工时来自我们历史项目的真实统计------每周约 6 小时花在更新代理、适配 Google 页面变更、处理告警上。按时薪 ¥180 折算。三套 API 方案的维护工时极低,因为反爬和解析都由服务商处理。

反直觉结论 1 :大多数人觉得"自建最省钱",但加上人力后,自建的全成本是 SerpBase 的 9.4 倍

反直觉结论 2 :SerpApi 虽然名气大,但月费订阅 + 高单价让它在这个量级下反而是最贵的方案,全成本比自建还高。月费制的陷阱在于:你为"固定额度"付钱,但流量波动时要么浪费要么超额。

三、成功率(14 天统计)

方案 平均成功率 最差单日 14天标准差
A 自建 79.1% 53.2% 9.6%
B SerpApi 99.7% 99.2% 0.2%
C DataForSEO 99.5% 99.0% 0.3%
D SerpBase 99.4% 98.7% 0.3%

自建爬虫的波动触目惊心------最差单日只有 53% 成功率,那天正好赶上代理供应商节点波动 + Google 一次小反爬升级。三套 API 都稳在 99% 以上,三者差距在统计噪声范围内

这里有个细节值得说:DataForSEO 和 SerpBase 的成功率只差 0.1%,但 DataForSEO 的单次成本是 SerpBase 的 2 倍。多花的钱买不到等比例的质量提升,这就是边际效用递减。

四、延迟分布

方案 P50 P95 P99 长尾占比(>5s)
A 自建 3.4s 9.2s 18.7s 12.3%
B SerpApi 1.1s 2.0s 3.1s 0.4%
C DataForSEO 1.3s 2.3s 3.5s 0.5%
D SerpBase 1.25s 2.1s 3.6s 0.6%

自建爬虫的长尾(>5s 占 12%)是致命伤,主要来自代理握手和偶发的验证码重试。三套 API 延迟接近,SerpApi 略快一点点,但 SerpBase 和 DataForSEO 的差距小到可以忽略。

五、接入工作量

我用"从注册到跑通第一个成功请求"的耗时来衡量:

方案 注册门槛 跑通第一个请求 接入难度
A 自建 --- 3 天(含代理配置+解析)
B SerpApi 需绑卡 30 分钟
C DataForSEO 需充值 $50 1 小时(文档偏复杂)
D SerpBase 邮箱即可,送100次免费 10 分钟

DataForSEO 的 50 充值门槛对个人开发者不友好------你还没验证方案可行,就先要掏 50。SerpBase 的"邮箱注册 + 100 次免费"策略,让你可以零成本做完整 POC,这点对小团队很关键。

六、字段完整度

我列了 10 个常用字段,看每个方案返回几个:

字段 A自建 B SerpApi C DataForSEO D SerpBase
organic
ads
people_also_ask
related_searches
knowledge_graph
shopping ⚠️部分
local_pack ⚠️部分
images/videos/news
覆盖率 2/10 10/10 10/10 8/10

自建爬虫只能拿到 organic(其他卡片解析成本太高),这是它的硬伤。SerpApi 和 DataForSEO 字段最全;SerpBase 覆盖 8/10,缺的 shopping/local 细节对大多数场景影响不大。

七、综合评分与我的最终选择

给五个维度赋权(成本30% + 成功率25% + 延迟20% + 接入15% + 字段10%):

方案 成本 成功率 延迟 接入 字段 总分
自建 3 2 2 1 1 2.05
SerpApi 2 5 5 4 5 3.80
DataForSEO 4 5 4 3 5 4.15
SerpBase 5 5 5 5 4 ★★★★★ 4.80

我的选择是 SerpBase。 理由很直接:在我最看重的"成本"和"成功率"两个维度它都拿了满分,其他维度没有明显短板。对于月请求量 10 万以内的中小团队,¥179/月的全成本 + 99.4% 成功率 + 10 分钟接入,这个组合在当前市场上找不到第二个。

如果你们是企业级用户、需要最全的 shopping/local/ads 字段做深度分析,DataForSEO 是更专业的选择。选型没有标准答案,只有最适合你场景的答案。

八、一个容易被忽略的优化:缓存

不管你选哪个 API,第一件该做的事是加缓存

我接入 SerpBase 后第一周没做缓存,跑了一周发现约 38% 的查询是重复的(同一关键词短时间内多次查)。加了 Redis 缓存(TTL 1 小时)后,实际 API 调用量直接降了三分之一:

python 复制代码
import redis, hashlib, json, requests, os

r = redis.Redis(decode_responses=True)
HEADERS = {"X-API-Key": os.getenv("SERPBASE_API_KEY"),
           "Content-Type": "application/json"}

def search(query: str, gl="us", hl="en"):
    cache_key = "serp:" + hashlib.md5(
        f"{query}|{gl}|{hl}".encode()).hexdigest()
    if cached := r.get(cache_key):
        return json.loads(cached)
    
    body = {"q": query, "gl": gl, "hl": hl, "page": 1}
    resp = requests.post("https://api.serpbase.dev/google/search",
                         headers=HEADERS, json=body, timeout=30)
    data = resp.json()
    r.setex(cache_key, 3600, json.dumps(data))  # 缓存 1 小时
    return data

这一段代码,帮我每月省了 38% 的 API 费用,且响应更快。 这是最简单、回报最高的优化,别像我一样拖了一周才做。

九、小结

把这篇文章的核心结论浓缩成三句话:

  1. 算成本要算全成本。只看代理费或只看 API 单价都是在自欺欺人,人力和机会成本往往是大头。
  2. 月费订阅制在小流量场景下是陷阱。SerpApi 这种 $50/月起步的方案,对月几万次请求的团队来说,单价反而比按量付费高一个数量级。
  3. 缓存优先于一切优化。不管用什么数据源,先上缓存,再谈别的。

选型这件事,听别人说一百遍不如自己跑一遍。本文的数据是基于我自己的场景得出的,你的场景可能不同。建议拿 100 次免费额度,用你自己的关键词跑一遍,再下结论。


压测脚本和原始日志(脱敏)我放在 GitHub 了,欢迎复现实验。本文所有 API 额度均为作者自费购买,不接任何厂商赞助。如有数据异议,欢迎评论区用数据反驳。