当前位置: 首页 > news >正文

大众点评爬虫实战:用 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),仅供参考

http://www.cnnetsun.cn/news/4114848.html

相关文章:

  • 物流经营分析6大维度:收入、成本、运力、时效、质量与利润全解析
  • 英飞凌TLD6098-2ES评估板深度评测:从汽车LED驱动原理到工程实践
  • 头歌实践教学平台:Spark大数据编程(四十九)
  • TraeWork 自定义模型配置教程 — 模型管理功能详解
  • 豪华车市场韧性分析:从奔驰2月销量看品牌策略与产品矩阵
  • 洛谷刷题心得3(条件分支)
  • 免费的中国行政区划矢量图下载:一个仓库集齐国家省市县四级shapefile数据
  • 主动式后桥转向系统:从原理到应用,如何让大车开起来像小车
  • 云克隆 Luminex 试剂盒助力肿瘤免疫调控机制深度解析
  • 网页视频下载总失败?开源浏览器资源嗅探扩展猫抓给出第三种答案
  • 【软考】2025下半年网络工程师(案例分析)真题及解析
  • DS4Windows终极使用教程:PS4手柄连电脑,从安装到调校一步到位
  • 项目健康度评估与复活指南:从僵尸项目诊断到现代化重构
  • 嵌入式开发中printf重定向原理与DAVE平台UART输出实战
  • 专业健身行业同城引流公司 帮你轻松搞定门店客流增长难题
  • 延迟渲染原理与实践:G-Buffer 架构与多光源场景优化
  • 从TDA5240芯片停产看红外遥控技术演进与硬件工程师的替代方案实战
  • 多智能体强化学习在动态流场微尺度群体运动优化中的应用
  • 6、工程搭建
  • AI Agent 敢开写权限吗?一套四级授权矩阵与 7 项上线检查
  • 英飞凌TC26x汽车MCU:架构解析、功能安全开发与实战应用
  • 网页视频下载总碰壁?试试猫抓这款免费开源的浏览器资源嗅探插件
  • 软件造价报告对财政评审有什么用?
  • 猫抓Cat-Catch使用指南:三步学会网页视频嗅探与下载
  • 不装客户端也能聊微信:wechat-need-web 让微信网页版恢复可用的完整指南
  • TEMU防关联系统:20核引擎全开,百店并发零报错零中断
  • 基于最优传输理论解决MoE模型训练中的专家负载不均衡问题
  • Java面试核心突破:原理理解与实战设计
  • MechRL:用强化学习自动发现Transformer内部关键电路
  • TEMU防关联系统:轻松管理200+店铺的底层防风控实战