十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

大众点评爬虫快速上手:30分钟跑通搜索、详情与评论全量采集

大众点评爬虫快速上手:30分钟跑通搜索、详情与评论全量采集 大众点评爬虫快速上手30分钟跑通搜索、详情与评论全量采集【免费下载链接】dianping_spider大众点评爬虫全站可爬解决动态字体加密非OCR。持续更新项目地址: https://gitcode.com/gh_mirrors/di/dianping_spider当你需要调研一座城市的餐饮市场却发现竞品数据散落在几百个店铺页面里逐个复制显然不现实。而直接写脚本去抓大众点评又会撞上动态字体加密——页面上看起来正常的数字抓下来却是一堆乱码。大众点评爬虫dianping_spider正是为解决这类问题而生的开源项目它覆盖搜索、详情、评论三个页面内置动态字体解密算法非OCR方案支持 cookie 池与 IP 代理把全站可爬从口号变成了开箱即用的能力。本文会带你理解它的核心机制并完成一次真实的数据采集。项目全景一个命令跑通三个数据模块dianping_spider 用 Python 3 编写跨 Windows、Linux、macOS 平台运行。它的工作方式可以概括为搜索关键词定位店铺 → 抓取每个店铺的详情 → 再按需抓取评论最终把结果写入 MongoDB。整个流程由两个配置文件驱动你不需要写一行业务代码。项目核心能力一览✅ 搜索页采集按关键词和城市获取店铺列表含店名、人均价格、评分、地址、标签✅ 详情页采集补充电话、营业时间、详细评分维度口味/环境/服务等字段✅ 评论页采集用户打分、评论内容、点赞数、回复数、发布时间等互动数据✅ 动态字体解密自动解析加密字体文件无需 OCR直接还原真实数字✅ 三级反爬防护按请求次数自动调整休息间隔配合 cookie 池和代理 IP 轮换✅ 灵活运行模式既能完整流程采集也能用命令行只抓指定店铺的详情或评论对新手最友好的一点是项目把爬什么和怎么爬分开管理config.ini控制请求频率、cookie、代理等运行参数require.ini控制需要哪些数据。想先跑通再深入只要改两三个参数即可。关键机制拆解它凭什么能稳定采到数据动态字体加密的破解逻辑大众点评的反爬核心在于字体加密页面把数字映射到一套自定义字体浏览器渲染时显示正确爬虫拿到的 HTML 里却是乱码。这个项目采用解析加密字体文件 字符映射替换的思路自动完成解密全程不依赖 OCR 识别。为什么说这点很关键因为传统方案要么人工对照字形低效要么用图像识别易误判而这里的字体表映射方案准确率高、速度快且解析结果会缓存多次运行时无需重复计算。下图是搜索结果采集效果可以看到店铺 ID、名称、评论数、人均价格、标签、地址等字段被完整还原字体加密没有造成任何数字缺失三级防封策略与多重身份轮换大众点评的封禁逻辑会同时盯住 IP 和 cookie单一身份高频访问几乎必被封。项目为此设计了组合拳请求频率控制requests_times支持分级限速例如1,2;3,5;10,50表示每 1 次请求休息 2 秒、每 3 次休息 5 秒、每 10 次休息 50 秒爬得越久、节奏越保守cookie 池在cookies.txt中每行放一个 cookie程序自动轮换降低单个账号被盯上的概率IP 代理支持 http 提取模式和秘钥隧道模式配合加密接口使用是大规模采集时无人值守的关键加密接口与网页解析双通道项目融合了加密接口 网页解析两种数据来源程序根据配置自动选择。接口模式的优势是数据准确详情页评分更可靠且对代理友好代价是未登录状态电话号末尾两位会隐藏网页模式则能拿到更完整的登录态数据。你只需在config.ini中配置uuid和tcv两个参数获取方法在docs/json.md中有图文教程程序会在两种通道间自动权衡。详情页数据效果如下图所示评分、电话、地址等字段已结构化保存快速上手路径从环境到首次运行准备与安装先确保本机有 Python 3 和 MongoDB本地默认端口 27017 即可mongo_path可留空。克隆项目并安装依赖git clone https://gitcode.com/gh_mirrors/di/dianping_spider cd dianping_spider pip install -r requirements.txt依赖包括 lxml、requests、fontTools、pymongo 等都是常见库安装一般不会卡壳。如果速度慢可以加清华镜像源-i https://pypi.tuna.tsinghua.edu.cn/simple。最小化配置首次运行建议只改config.ini里的三个核心参数其余保持默认[config] use_cookie_pool False # 先不用 cookie 池 save_mode mongo # 保存到 MongoDB [detail] keyword 自助餐 # 搜索关键词 location_id 8 # 城市代号如上海为 1、北京为 2、广州为 4 need_pages 1 # 先只抓 1 页验证流程再打开require.ini把评论开关打开这是数据价值最高的部分[shop_review] need True more_detail True need_pages 1 # 一页约 30 条评论运行与验证python main.py控制台会依次输出搜索、详情、评论的进度日志。结束后用 MongoDB 客户端查看detail、review等集合应能看到类似下图的评论数据——包含用户打分、评论内容、点赞数、回复数和发布时间如果你想跳过搜索、只抓已知店铺可以换用命令行模式例如只抓评论python main.py --normal 0 --review 1 --shop_id k30YbaScPKFS0hfP --need_more False。shop_id替换成目标店铺 ID 即可。进阶玩法与避坑指南让效率翻倍的三个技巧开启加密接口按docs/json.md的步骤从浏览器开发者工具的 XHR 请求中复制uuid和tcv填入配置。接口模式配合代理是当前版本实现大规模无人值守采集的推荐路径配置 cookie 池登录大众点评后按 F12 复制 Cookie一行一个写入cookies.txt并设置use_cookie_pool True。注意复制完整值浏览器会把超长 cookie 截断成省略号导致编码报错多页评论need_pages并非越大越好程序会取你填的页数与店铺实际评论页数的较小值建议按需设置常见报错排查技巧卡住不动多半是代理质量差导致响应超长或首次解析字体文件耗时 2~3 秒。先排除网络因素再考虑换代理提示处理验证码点击日志中的链接手动通过人机验证即可这是大众点评冷启动机制通过后一段时间内不会再触发cookie 失效或被限制访问先手动用浏览器访问目标页面确认是否真被封。另一种可能是该城市页面未加密需注释掉detail.py和review.py中的字体解析代码详见docs/problems.md详情页被 ban说明触发了反爬调大requests_times的休息间隔并等待解封或暂时只抓评论页遇到拿不准的情况先读一遍docs/目录下的六篇文档含数据规约、cookie 池、代理配置等大部分问题都能找到答案。从跑通到会用一条清晰的学习路线这个项目的价值不止于能抓到数据。它的字体解密实现、加密接口适配、分级限速设计都是理解现代反爬对抗的绝佳教材。建议的进阶路径是先用默认配置跑通一次 → 对照docs/data.md熟悉字段规约 → 尝试配置 cookie 池和代理 → 最后阅读function/下的search.py、detail.py、review.py源码理解模块如何协作。你还可以配合 Pandas 做去重与格式清洗用词云和情感分析挖掘评论中的市场信号。数据采集是持续迭代的过程反爬规则会变但掌握了解密思路和防护策略你就能从容应对。现在就从第一次运行开始吧。【免费下载链接】dianping_spider大众点评爬虫全站可爬解决动态字体加密非OCR。持续更新项目地址: https://gitcode.com/gh_mirrors/di/dianping_spider创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表