以前用 requests 加 BeautifulSoup 抓取豆瓣短评,经常只能拿到一个显示“载入中...”的空壳页面,解析出来的评论条数为零。这是因为豆瓣如今将短评数据全部交由 JavaScript 动态加载,传统的静态页面抓取方法已经失效。
年后,我利用空余时间,使用 Playwright 异步驱动 Firefox 浏览器,成功爬取了今年春节档几部热门电影的豆瓣短评。这套方案能够完整模拟真实浏览器的渲染过程,动态加载问题迎刃而解。
我选择 Firefox 引擎,是因为它在某些反爬场景下的浏览器指纹比 Chromium 更自然,能有效降低被识别为自动化脚本的风险。通过异步并发抓取多部电影的数据,不仅效率高,成功率也得到了保证。
本次爬取的目标是2026年春节档电影,包括《飞驰人生3》《镖人:风起大漠》《惊蛰无声》《星河入梦》等。最终,我获取了每部电影的有效短评及对应的用户打分。
爬取结果与分析
根据爬取到的原始短评数据,我进行了简单的统计,汇总如下:

为了更直观地对比用户口碑,我对每部电影的短评得分进行了进一步计算:
《星河入梦》 (豆瓣ID: 36883105)
- 短评数量: 113 条
- 短评平均分: 6.12 分
- 短评评分≥8分占比: 46.90%
《惊蛰无声》 (豆瓣ID: 37242440)
- 短评数量: 118 条
- 短评平均分: 4.85 分
- 短评评分≥8分占比: 18.60%
《镖人:风起大漠》 (豆瓣ID: 36474027)
- 短评数量: 114 条
- 短评平均分: 6.40 分
- 短评评分≥8分占比: 43.90%
《飞驰人生3》 (豆瓣ID: 37311135)
- 短评数量: 119 条
- 短评平均分: 5.95 分
- 短评评分≥8分占比: 38.70%
数据背后的发现
从最终票房来看,《飞驰人生3》以29.27亿的成绩稳坐春节档冠军宝座。然而,基于我们爬取的真实用户短评数据进行计算后,却发现了一些有趣的背离:
- 口碑与票房的错位:在豆瓣官方页面,《镖人:风起大漠》的整体评分为7.5分,略高于《飞驰人生3》的7.4分。而从我们计算的短评平均分来看,《镖人》的6.4分也高于《飞驰人生3》的5.95分。这表明在核心观影群体中,《镖人》获得了相对更好的评价。
- “逆跌”黑马的支撑:市场数据显示,《镖人:风起大漠》是春节档后期唯一一部票房连续“逆跌”的影片。票房可以依靠初期排片和预售冲刺,但持续的口碑发酵,则只能依靠观众看完电影后一句一句的真实评论来推动。
这次实践再次证明,对于现代大量依赖 JavaScript 渲染的网站,像 Playwright 这样的浏览器自动化工具是进行数据采集的利器。它不仅能用于软件测试,在需要处理复杂前端交互的爬虫场景下同样表现卓越。本次爬取的具体代码实现,涉及到异步任务调度、页面元素等待、数据解析等Python 技巧,后续有机会可以在技术社区进行详细分享。
你对使用浏览器自动化工具做数据抓取有什么心得或疑问吗?欢迎在云栈社区与其他开发者一起交流探讨。
|