凌晨两点,TikTok改了个布局,我的"极简"爬虫当场暴毙。九天的调试,三周的周末,全成了沉没成本。
如果你还在用Playwright+自定义选择器硬刚TikTok,接下来的内容会让你不舒服。但请看完——这可能是你今年最值得花五分钟的技术决策。
你的爬虫为什么必死
去年四季度,我烧掉三个周末打磨一个"极简"TikTok爬虫。Selector-first架构、无头浏览器、全套fixture。上线第九天,TikTok UTC凌晨两点推送布局更新,我的选择器全部失效。
问题根本不在代码质量。三件事杀死你的爬虫,且与你写得多漂亮无关:
第一,平台随时变。TikTok的DOM结构没有SLA保障,改个class名就能让你的xpath变成废铁。
第二,反爬在进化。验证码、设备指纹、行为检测——这场军备竞赛没有终点,只有消耗。
第三,也是最痛的:你不是拿工资维护爬虫的。你的KPI是交付上层业务,不是跟平台工程师玩猫鼠游戏。
作者Nova Chen的原话很扎心:「You're not getting paid to maintain that. You're getting paid to ship the thing on top of it.」
翻译过来:公司雇你不是让你当爬虫修理工的。
五行Python的降维打击
解决方案来自Apify生态。不是广告,是工程选择——对于TikTok这种有成熟API封装的平台,直接调用现成actor比自研更理性。
核心代码五行:
```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("sian.agency/best-tiktok-ai-transcript-extractor").call(
run_input={"bulkUrls": ["https://www.tiktok.com/@user/video/7565659068153531669"]}
)
print(list(client.dataset(run["defaultDatasetId"]).iterate_items()))
```
输入接口极简:只有两个字段需要关心。没有代理配置,没有验证码设置,没有"有头还是无头"的宗教战争。
输出却相当丰满。每条视频返回AI转录文本(官方宣称准确率99%+,实测英语内容约98%,重度俚语场景略低),外加45个元数据字段:播放量、点赞、分享、创作者统计、话题标签、音乐ID、地理位置、内容分类。
转录文本带语言检测和分段时间戳,意味着你可以像搜索文档一样搜索视频内容——这是自建方案需要额外接Whisper+后处理才能实现的。
Nova Chen上个月用这套方案重构了竞品监控管道。旧架构:Playwright集群+Whisper容器+Redis+cron+每周在Slack道歉的频道。新架构:60行Python脚本+actor。数据集完全一致,攻击面大幅缩减,道歉记录归零。
"自研免费"是最大的幻觉
反对声音 predictable:「按次付费?我自己搭免费。」
这个账算错了。你的时间不是免费的,而且你并非真正"自研"——你只是每两周自我重建一次,因为平台又变了。
Actor的计费模型是按验证结果付费。只有成功返回可用数据的运行才产生费用,崩溃、被封、空跑都不收钱。这与"计算小时数"的云计算模式有本质区别:后者为你的失败买单,前者只为成功定价。
当然,如果体量真的巨大,自建是合理选项。但「巨大」是工程决策的结果,不是默认起点。多数人高估了自己的规模阈值,低估了维护成本的无底洞。
免费 tier 的配置:每轮5条视频,间隔8秒延迟。适合验证数据形态是否符合业务需求。扔个TikTok链接进去,看跑出来的结构再决定要不要深入。
批量模式付费:每轮无上限、无延迟、无单条计费。适合跑通实验阶段后的生产部署。
一个挑衅的结尾
Nova Chen在原文结尾抛了个挑战:「不服?把你在用的TikTok爬虫代码贴评论区,我告诉你哪行会先崩。要具体——"我用Puppeteer"不算代码。」
这姿态很技术社区:用可验证的预测代替立场之争。
我的判断是:这件事的重要性不在于Apify这个具体平台,而在于它代表的基础设施成熟曲线。当平台级爬虫的维护成本被专业化服务商摊薄,自研的合理规模阈值被不断推高,个体开发者和中小团队的决策逻辑需要重置。
不是"不能自研",而是"自研的门槛比你以为的高"。高到多数情况下,接受按结果付费是更诚实的工程选择。
如果你正在维护TikTok、Instagram、LinkedIn的爬虫,建议做个审计:过去半年,你花在修复选择器、轮换代理、调试验证码上的工时,换算成时薪,够买多少条actor调用?
算完这笔账,再决定要不要继续当爬虫修理工。
热门跟贴