news 2026/8/20 10:08:43

大众点评爬虫实战:用 dianping_spider 从零到一搞定店铺与评论数据采集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
大众点评爬虫实战:用 dianping_spider 从零到一搞定店铺与评论数据采集

大众点评爬虫实战:用 dianping_spider 从零到一搞定店铺与评论数据采集

【免费下载链接】dianping_spider大众点评爬虫(全站可爬,解决动态字体加密,非OCR)。持续更新项目地址: https://gitcode.com/gh_mirrors/di/dianping_spider

做餐饮市场分析的朋友,大概都经历过这种崩溃时刻:想研究某个城市的自助餐竞争格局,手动复制了二十家店的信息就耗掉一下午,刚想抓点用户评论,迎面撞上验证码;第二天想续跑,IP 又被封了。今天要聊的大众点评爬虫项目 dianping_spider,就是为解决"店铺数据采集 + 评论抓取"这类需求而生的开源方案——它不靠 OCR 识别文字,而是直接破解动态字体加密,搜索页、详情页、评论页全站可爬,且持续更新维护。

一次崩溃的手动采集,暴露了三个真实问题

我认识的一位市场分析师小 A,接到过这样一个需求:调研大连地区自助餐门店的定价、评分与口碑,两周内出报告。她的第一反应是"手动采集",结果半天下来只存了二十来条记录,还发现三个绕不开的坎:

  1. 页面文字是"乱码"。店铺名、评分、人均价格在网页源码里全是特殊字符,复制出来根本读不懂——这正是大众点评的动态字体加密在起作用。
  2. 频率一高就被拦。连续翻了几页搜索结果,页面开始弹出人机验证,IP 被临时限流。
  3. 登录态说没就没。评论数据需要登录身份访问,cookie 过期后一切归零,重来。

这三件事,几乎是所有想碰大众点评数据的人共同的遭遇。区别只在于:有人选择放弃,有人选择找一个能扛住这些反爬手段的工具。

大众点评到底在防什么:先看懂三道关卡

在动手之前,值得花两分钟搞清楚对手是谁。

第一道:字体反爬。通俗讲,就是网页把正常的文字伪装成另一套"加密字体",人和程序读到的都是乱码,只有浏览器渲染后才显示正常。传统爬虫在这一步就全军覆没,常见替代方案是 OCR 截图识别——慢且容易错。而 dianping_spider 的做法是拿到加密字体文件后,直接解出字符映射关系,把乱码还原成可读文本,速度快、准确率高。

第二道:频率与 IP 限制。大众点评会监控请求节奏,短时间高频访问直接触发人机验证。项目内置了"请求 N 次休息 M 秒"的分级策略,同时支持代理 IP 轮换,把触发概率压到最低。

第三道:登录态与 cookie。评论、电话这类敏感数据必须带 cookie 访问,而单账号高频使用容易被封。项目用 cookie 池方案——多个 cookie 轮流上场,谁被盯上就换下一个,账号整体存活率显著提升。

为什么是它:三个差异点让我留下它

市面上不是没有其他爬虫方案,但横向对比后,这个项目的差异化足够明显:

对比维度dianping_spider常见替代方案
字体反爬处理直接解密字体映射,非 OCROCR 识别,慢且易错
采集范围搜索、详情、评论全站覆盖往往只覆盖单页面
反封策略cookie 池 + 代理 + 分级限速单一限速,无兜底
使用门槛30+ 参数但大多可默认灵活度低或配置繁琐

另一个让我下决心的是模块化设计:搜索、详情、评论是三个独立模块,既可以走"搜索→详情→评论"的完整流程,也可以跳过搜索,直接指定某个店铺 ID 只爬详情或只爬评论。这种自由度,恰好匹配"我只想要某一个竞对的所有评价"这类高频场景。

从零到第一份报告:这趟旅程的关键决策点

下面这段旅程,我按"拿到项目 → 跑通 → 出数据"的真实顺序来走,只讲关键决策点,不罗列流水账。

第一步:环境,一条命令搞定

需要 Python 3 环境,然后克隆项目并安装依赖:

git clone https://gitcode.com/gh_mirrors/di/dianping_spider cd dianping_spider pip install -r requirements.txt

依赖下载慢的话,可以加清华镜像源-i https://pypi.tuna.tsinghua.edu.cn/simple。到这里,环境就绪。

第二步:config.ini,重点只看四处

打开config.ini,参数虽多,但第一版配置只需盯住四处

参数作用我的建议
keyword搜索关键词先填一个具体品类,如"自助餐"
location_id城市代号上海 1、北京 2、广州 4,大连 8
need_pages搜索多少页首次从 1~2 页起步,别贪
requests_times请求节奏默认1,2;3,5;10,50就够用

requests_times的语义值得多说一句:1,2表示每请求 1 次休息 2 秒,3,5表示累计到 3 次休息 5 秒,10,50表示累计到 10 次休息 50 秒。这是整个项目最重要的"防封旋钮"——被 ban 了就调大,嫌慢就适度调小,但别太激进。

第三步:require.ini,采集策略的开关哲学

这个文件决定"要哪些数据、付出多大代价"。两个关键决策点:

  • 店铺电话need = True是"要电话",need_detail决定要不要完整号码(False时只给12345678**)。注意:完整电话需要登录身份,会携带 cookie 请求,频繁调用有封号风险,建议按需开启。
  • 评论抓取need = True开启评论;more_detail = True表示不只抓 10 条精选,而是翻页抓更多(每页 30 条);need_pages控制翻几页。评论是价值密度最高的数据,如果只选一个模块先跑,我建议选它。

第四步:跑起来,两种姿势

完整流程(搜索→详情→评论)直接运行:

python main.py

定制化场景则用命令行指定,比如只要某个店铺的评论:

python main.py --normal 0 --review 1 --shop_id k30YbaScPKFS0hfP --need_more True

第一次跑通后,控制台会输出每个阶段的日志:搜索到多少家店、详情获取成功与否、评论抓了几页。看到日志里出现"数据保存完成",这趟旅程就算走通了一半。

数据长什么样:三张图看懂采集结果

数据默认写入 MongoDB(save_mode = mongo,本地默认端口可不填连接串)。采集结果分三层,先看搜索结果:

搜索层拿到的是店铺列表的"粗数据",足够支撑区域市场概览。再往下是详情层,字段更完整——地址、电话、营业时间,以及口味/环境/服务三维评分:

详情页还能带出推荐菜和标签,帮你看清一家店的定位和主打产品:

最后是评论层,用户打分、评论正文、点赞数、回复数一应俱全,是情感分析和口碑研究的原料:

配合统计视图,你甚至能直接看到好评/差评分布,不用再手动归类:

踩坑实录:配置前后,效果天差地别

这一节是我真实跑过之后最有体感的部分,直接上对比:

场景配置前配置后
详情页频繁被 ban默认限速,跑两页就警告"详情页请求被ban"requests_times调大一档,重启后稳定
单 cookie 遇验证码弹验证码,程序卡住等人use_cookie_pool = True,把多个 cookie 写进cookies.txt(一行一个),自动轮换
大规模采集被封一个 IP 硬扛,半小时后全红开代理(use_proxy = True配置代理接口),配合匿名接口,几乎做到无人值守

还有一个高频坑:想通过加密接口拿更多字段时,需要在浏览器开发者工具里找到请求参数uuidtcv并填入配置。流程是:登录点评 → 打开任一店铺详情页 → F12 切到 Network 的 XHR 面板 → 刷新后找allReview请求 → 在参数里复制这两个值:

这一步看着繁琐,但做一次就够——这两个参数有效期很长,不像 token 那样几分钟就过期。

边界感:合规使用才是长期主义

最后必须说清楚边界。这个项目仅限学习交流,作者也明确禁止商用。实际使用时请守住三条底线:控制请求频率,别给目标站点造成负担;只采集公开的经营数据,不碰个人敏感信息;遵守平台服务条款。数据采集是一场与反爬机制的长期博弈,但守规矩的采集者才能走得远——这也是为什么项目把限速、日志、重试机制都做进了默认配置里。

数据到手之后,才是真正开始

回到开头小 A 的任务:现在她可以批量拿到大连自助餐门店的价格、评分、地址和上万条真实评论,两周的报告周期压缩到一天。但拿到原始数据只是起点——去重清洗、价格分档、评论分词、情感倾向统计,这些才是把数据变成决策的最后一公里。

当爬虫把"采集"这个体力活干掉之后,留给你的问题就变成了:同一个城市、同一品类,评分 Top10 和口碑垫底的店,差评里反复出现的高频词是什么?想清楚这个问题,你才算真正用好了这套大众点评爬虫。如果你在配置阶段卡住了,翻一翻项目里docs/下的问题文档(比如 cookie 池说明、存储说明、加密接口说明),多数答案都在里面。

【免费下载链接】dianping_spider大众点评爬虫(全站可爬,解决动态字体加密,非OCR)。持续更新项目地址: https://gitcode.com/gh_mirrors/di/dianping_spider

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/20 10:07:56

英飞凌TLD6098-2ES评估板深度评测:从汽车LED驱动原理到工程实践

1. 开箱初印象:从包装到板卡布局的细节审视 收到英飞凌TLD6098-2ES评估板的那一刻,感觉和以往接触的很多开发板不太一样。包装盒是英飞凌评估板常见的蓝白配色风格,简洁且专业,没有过多花哨的设计。打开盒子,板卡被妥帖…

作者头像 李华
网站建设 2026/8/20 10:07:25

头歌实践教学平台:Spark大数据编程(四十九)

四十九、网约车大数据综合项目 —— 数据分析Spark第1关:统计撤销订单中撤销理由最多的前 10 种理由本关任务 基于 EduCoder 平台提供的初始数据集,统计撤销订单中撤销理由最多的前 10 种理由。任务描述 使用 Spark 统计撤销订单中撤销理由最多的前 10 种…

作者头像 李华
网站建设 2026/8/20 10:04:50

TraeWork 自定义模型配置教程 — 模型管理功能详解

目录 前言:TraeWork 模型体系准备工作操作步骤第一步:打开设置第二步:进入模型管理第三步:点击添加模型第四步:填写模型配置第五步:确认添加成功在对话中使用配置参数说明常见问题 前言:TraeW…

作者头像 李华
网站建设 2026/8/20 10:04:39

豪华车市场韧性分析:从奔驰2月销量看品牌策略与产品矩阵

1. 从“稳健上升”看豪华车市场的韧性密码 又到了月初各家车企公布销量成绩单的时候。今天看到奔驰公布的数据,2月份在华交付量同比增长了17%,官方用了“稳健上升”这个词。说实话,在当下这个充满变数的市场环境里,看到这个数字&a…

作者头像 李华
网站建设 2026/8/20 10:04:04

洛谷刷题心得3(条件分支)

P5712 【深基3.例4】Apples题目描述小 B 喜欢吃苹果。她今天吃掉了 x 个苹果。英语课上学到了 apple 这个词语,想用它来造句。如果她吃了 1 个苹果,就输出 Today, I ate 1 apple.;如果她没有吃,那么就把 1 换成 0;如果…

作者头像 李华