尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

大众点评数据采集完整实战:破解动态字体加密的爬虫项目快速上手指南

大众点评数据采集完整实战:破解动态字体加密的爬虫项目快速上手指南 大众点评数据采集完整实战破解动态字体加密的爬虫项目快速上手指南【免费下载链接】dianping_spider大众点评爬虫全站可爬解决动态字体加密非OCR。持续更新项目地址: https://gitcode.com/gh_mirrors/di/dianping_spider如果你正在为获取大众点评的店铺信息、用户评论和评分数据发愁那么这个名为 dianping_spider 的大众点评爬虫项目可能就是你一直在找的答案。它专门攻克了平台最棘手的动态字体加密反爬无需 OCR全站可爬。下面我用一个真实的故事带你从零把它跑起来。一个下午我差点被大众点评逼疯小林是一家连锁餐饮品牌的市场分析师老板周五下班前丢给她一个任务下周一之前把同城 50 家竞品火锅店的评分、人均、地址、电话和近三个月的用户评论整理成报告。听起来很简单对吧但当她打开大众点评想复制粘贴第一家店铺的信息时她发现页面上显示的不是口味 4.87而是一堆乱码一样的符号。刷新页面乱码变成了另一堆。用浏览器选中文字复制出来粘到 Excel 里全是不可读的方块字。这是大众点评的动态字体加密——页面上每个数字都被替换成了自定义字体里的特殊字形普通人在浏览器里看不出差别但一复制就露馅。传统爬虫拿到 HTML 后解析出来的评分、人均、评论数全是乱码。更别提每几分钟一次的验证码、访问太频繁被暂时封禁、Cookie 过几分钟就失效……那天下午小林试了网上七八个通用爬虫模板全部阵亡在字体解密这一步。直到她在同事的推荐下找到了这个项目。这到底是怎样一个项目一句话dianping_spider 是一个专门面向大众点评的爬虫框架内置动态字体加密破解算法支持搜索、详情、评论三层数据采集并自带 Cookie 池、IP 代理、智能限速等防封手段数据可写入 MongoDB。它最核心的卖点有三个动态字体解密自动识别并破解大众点评的字体反爬不需要 OCR解密后数字直接可读防封三板斧三级限速、Cookie 池轮换、IP 代理把被 ban的概率压到最低模块化采集搜索、详情、评论三个模块可以自由组合按需取用项目使用 Python 3 开发核心代码集中在 function/ 目录采集控制与请求逻辑在 utils/ 目录所有踩坑记录都写在 docs/problems.md 里。三分钟跑通你的第一次大众点评数据采集别急着研究全部 30 多个配置参数先跑一个最小用例只采集搜索结果不碰详情和评论这样连 Cookie 都可以先不配。第一步拉取代码并安装依赖git clone https://gitcode.com/gh_mirrors/di/dianping_spider cd dianping_spider pip install -r requirements.txt如果下载慢可以加清华镜像源pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple第二步打开config.ini只改三处[config] use_cookie_pool False save_mode mongo requests_times 1,2;3,5;10,50 [detail] keyword 自助餐 location_id 8 need_pages 1参数说明keyword是搜索关键词location_id是城市代码上海为 1、北京为 2、大连为 8完整对照表见 docs/location.mdneed_pages是要翻几页先填 1 页测试。第三步把require.ini里的采集策略全部关掉只留最小集[shop_phone] need False [shop_review] need False第四步运行python main.py看到日志里输出已成功采集 X 条店铺信息就说明你的第一次采集成功了。数据默认写入 MongoDB字段是原始 JSON 结构后续自行清洗字段规约参考 docs/data.md。藏在代码里的四大核心能力跑通最小用例只是热身这个项目的真正价值在于下面四块硬实力每一块对应一个典型场景。能力一动态字体加密的自动化破解——对应页面全是乱码的场景这是项目的立身之本。大众点评把数字、评分、评论数渲染成自定义字体普通爬虫拿到的是加密后的字形映射。dianping_spider 内置了解析逻辑自动下载字体文件、分析映射关系、替换回真实数字全程无 OCR。你不需要理解 fontTools 怎么用框架帮你处理了。唯一要注意的是个别三四线城市的页面大众点评并没有加密可能是为了省服务器开销如果报cookie失效却手动访问正常多半是这种情况去 docs/problems.md 里看第 9 条手动注释掉字体解析即可。能力二三级限速策略——对应一请求多就被封的场景requests_times 1,2;3,5;10,50这串配置翻译成人话是阶段含义1,2每请求 1 次休息 2 秒3,5每累计 3 次请求休息 5 秒10,50每累计 10 次请求休息 50 秒它像爬楼梯一样逐级加大休息间隔把请求节奏压在大众点评的容忍线以下。如果被 ban 了第一反应就该是调大这里的时间。能力三Cookie 池与 IP 代理——对应账号/IP 活不过十分钟的场景Cookie 是访问搜索页的通行证单个 Cookie 高频使用很容易失效。项目支持在cookies.txt里每行放一个 Cookie自动轮换降低单个账号被盯上的概率原理说明见 docs/cookie_pool.md。IP 代理则是在大规模采集时的保命符。config.ini的[proxy]段落支持两种模式http_extractHTTP 提取接口返回 JSON 格式的 IP 列表和key_extract秘钥隧道模式。代理格式细节见 docs/proxy.md。能力四模块自由组合——对应我只想要评论/只想要详情的场景除了默认的搜索→详情→评论全流程你还可以用命令行精确指定采集范围# 只要某个店铺的详情 python main.py --normal 0 --detail 1 --review 0 --shop_id k30YbaScPKFS0hfP --need_more False # 只要某个店铺的评论 python main.py --normal 0 --detail 0 --review 1 --shop_id k30YbaScPKFS0hfP --need_more False # 详情和评论都要 python main.py --normal 0 --detail 1 --review 1 --shop_id k30YbaScPKFS0hfP --need_more False--need_more True表示要完整数据电话要不要中间四位打码、评论要不要翻页取更多都由require.ini里的need_detail、more_detail、need_pages控制。注意取完整电话和更多评论属于登录态数据会携带 Cookie 请求频繁抓取有封号风险谨慎开启。实际跑一轮你能拿到什么纸上谈兵没用我们看看真实输出。搜索模块拿到的是一批店铺的基础档案包含店铺 ID、名称、评论总数、人均价格、标签、地址、推荐菜、多维评分口味/环境/服务等字段。详情模块在此基础上追加电话、营业时间、优惠信息评论模块是价值最高的部分每条评论包含用户 ID、用户名、打分、评论内容、点赞数、回复数、发布时间、商家回复、评论图片等有了这三层数据你可以做竞品对比、用户画像、情感分析、价格监控几乎覆盖餐饮零售行业市场调研的所有基础数据需求。那些年我们一起踩过的坑以下是 docs/problems.md 里沉淀的真实高频问题按问题→原因→解法三段式给你排雷。坑一程序卡在验证码页面要你手动点链接原因触发了大众点评的人机验证spiderindefence解法打开日志里的链接手动过一下验证码即可。注意验证码只在非代理模式出现代理模式下会被直接丢弃坑二日志报详情页请求被ban或使用代理吧小伙汁原因请求频率过高被点评重点盯上了解法调大requests_times的休息时间耐心等待解封被重点关注的话就上代理坑三报错UnicodeEncodeError: latin-1 codec cant encode character \u2026原因浏览器复制 Cookie 时超长部分被截断成了省略号...这个非法字符导致请求报错解法复制完整 Cookie不要用省略号版本坑四程序一直卡住不动原因多半是代理质量差导致响应超长另外首次运行时加密字体文件的解析也要花几秒视电脑配置约 2~3 秒解法先排查网络/代理再确认是不是在解析字体耐心等它跑完坑五uuid 和 tcv 填了还是报替换tsv和uuid原因这两个参数用于加密接口非登录数据复制时容易出错经验表明 uuid 比 tcv 更重要解法重新从浏览器复制一遍注意是复制两次才生效的玄学在文档里也有记录。获取方法见 docs/json.md想采得更快更稳试试这几招招数一限速策略按任务规模分级设置小规模测试用1,2;3,5;10,50即可大批量采集建议上代理并把代理段的请求间隔调松一点。频率不是越快越好稳定跑完一整轮远比中途被封划算。招数二把登录态需求和非登录态需求分开跑电话详情、更多评论这类登录态数据最容易触发封号建议单独用低频率、优质 Cookie 执行搜索和基础详情用加密接口 代理跑效率和安全兼得。招数三善用定制化命令行模式如果你只关心某几个店铺别傻跑全流程搜索。用--detail 1 --review 1直接按shop_id采集省时省力还能少暴露请求特征。招数四数据落库后再清洗项目刻意保持原样保存、不做处理的策略因为大众点评不同频道字段格式差异很大。建议数据进 MongoDB 后再用 Pandas 做去重、格式标准化、中文分词和情感分析开发聚焦采集、分析交给数据栈各司其职。招数五试试配套的油猴插件项目还附带一个浏览器油猴插件 js/spider.user.js方便你在浏览器里直接观察和调试请求是理解反爬机制和排查问题的利器。边界与规范什么该做什么不该做项目遵循 GPL-3.0 开源协议仅限学习交流使用禁止商用包括程序代做等获利行为。动手前请先明确几条红线遵守平台条款仔细阅读大众点评的用户协议了解数据使用限制控制请求频率框架的限速配置不只是保护你的账号也是在保护目标网站的服务器不碰敏感数据不采集个人隐私信息不做用户画像之外的越界使用不非法牟利采集数据不得用于违法或不道德的目的技术是中性的能不能安全、合规地用取决于使用者的自律。从入门到进阶你还可以走得更远如果你不想止步于能跑通这里有一条参考路线看懂配置背后的机制精读 docs/cookie_pool.md、docs/proxy.md、docs/save.md 三篇碎碎念理解每个参数为什么存在通读核心源码从 function/search.py 到 function/detail.py、function/review.py再进入 utils/requests_utils.py 看字体解析和代理适配你会发现加密破解其实并不神秘动手做分析项目采集同城竞品数据做对比报告、基于评论构建用户画像、监控特定品类的价格波动把数据变成业务结论关注更新动态大众点评的反爬会持续升级docs/problems.md 里记录的字体特征变更响应码异常都是升级信号保持关注才能让你的采集长期有效现在去打开你的终端从三分钟最小用例开始。先把python main.py跑起来你就已经超过了 80% 停留在想采集但没动手的人。祝你在数据采集的路上越走越顺。【免费下载链接】dianping_spider大众点评爬虫全站可爬解决动态字体加密非OCR。持续更新项目地址: https://gitcode.com/gh_mirrors/di/dianping_spider创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表