大众点评爬虫实战指南:从配置到数据采集的全流程解析
一、核心引擎模块:爬虫的"中央控制系统"
1.1 启动引擎(main.py):项目的"一键启动器"
场景化应用价值:当你需要快速启动不同类型的爬取任务时,这个模块就像智能遥控器,能一键切换"完整爬取/仅详情/仅评论"三种模式,无需修改任何代码。
# 核心代码片段
parser.add_argument('--normal', type=int, default=1,
help='spider as normal(search->detail->review)')
常见问题预警:如果同时设置--normal和--detail参数,系统会优先执行完整爬取流程,忽略单独的详情爬取指令。
💡 专家提示:首次使用建议先运行默认模式(python main.py),观察系统是否能正常完成搜索→详情→评论的全流程,再根据需求添加参数。
1.2 加密请求处理器(get_encryption_requests.py):反反爬的"密码本"
功能矩阵图:
| 方法名 | 应用场景 | 关键参数 | 风险等级 |
|---|---|---|---|
| get_token | 获取店铺访问令牌 | shop_url | 高(频繁调用可能触发风控) |
| get_font_msg | 破解字体加密 | 无 | 中(每日限制调用100次) |
| get_basic_hidden_info | 提取隐藏数据 | shop_id | 低 |
场景化应用价值:大众点评采用动态字体加密技术隐藏关键数据,这个模块就像专业的"密码解码器",能在不使用OCR的情况下精准还原加密信息。
常见问题预警:调用get_token方法时,如果返回"403 Forbidden",需要检查config.ini中的uuid参数是否有效。
💡 专家提示:字体加密规则每7天更新一次,建议定期运行get_font_msg()更新本地字体映射库,避免出现数据乱码。
二、数据处理模块:信息的"净化工厂"
2.1 搜索爬虫(search.py):数据采集的"先锋部队"
场景化应用价值:当你需要批量获取某类商家信息(如"上海自助餐")时,这个模块能模拟用户搜索行为,自动翻页并提取关键数据,就像配备了自动导航的"数据采集车"。
# 核心代码片段
def search(self, search_url, request_type='proxy, cookie'):
# 发起搜索请求并解析结果
常见问题预警:如果搜索结果突然减少,可能是触发了频率限制,需要检查config.ini中的requests_times参数。
2.2 数据存储组件(saver/):信息的"智能仓库"
功能矩阵图:
| 存储类型 | 适用场景 | 优势 | 局限 |
|---|---|---|---|
| CSV存储 | 小量数据(<1万条) | 无需额外软件,Excel直接打开 | 不支持复杂查询 |
| MongoDB存储 | 大量数据(>1万条) | 支持复杂查询和索引 | 需要安装MongoDB服务 |
场景化应用价值:爬取的数据需要妥善保管,这个模块提供了"文件柜"(CSV)和"数据库"(MongoDB)两种存储方案,可根据数据量灵活选择。
常见问题预警:使用MongoDB存储时,如果出现"连接超时"错误,请检查mongo_path配置是否包含正确的端口号(默认27017)。
💡 专家提示:对于餐饮点评分析类项目,建议使用MongoDB存储,方便后续进行地理位置查询(如"查找3公里内评分>4.5的火锅店")。
三、系统配置模块:爬虫的"控制面板"
3.1 核心配置文件(config.ini):系统的"控制面板"
决策树式配置指南:
是否需要代理?→ 是 → 选择代理模式(http/key)→ 填写对应参数
↓
否 → 是否使用cookie池?→ 是 → 配置cookies.txt
↓
否 → 直接填写Cookie参数
配置参数双栏对照:
| 参数名 | 新手推荐值 | 高级自定义 | 影响范围 |
|---|---|---|---|
| use_cookie_pool | False | True(需10+Cookie) | 所有请求 |
| requests_times | 1,2;3,5 | 3,3;10,10 | 爬取速度 |
| use_proxy | False | True(付费代理) | 反反爬能力 |
| save_mode | csv | mongo | 数据管理 |
场景化应用价值:这个文件集中了所有可调节参数,就像汽车的"仪表盘",通过简单修改就能改变爬虫的行为模式,无需编程基础。
常见问题预警:修改location_id时,需要使用城市代码(如上海是1,北京是2),直接填写城市名称会导致搜索失败。
💡 专家提示:配置修改后建议使用--need_pages=1参数测试(仅爬取1页数据),确认配置生效后再进行全量爬取,避免浪费代理资源。
四、实战操作指南
4.1 环境准备
- 克隆项目代码库到本地
- 安装依赖包:pip install -r requirements.txt
- 配置config.ini文件,至少填写Cookie和uuid参数
4.2 快速启动三步骤
- 基础搜索:python main.py --need_pages=2(爬取前2页搜索结果)
- 单独详情:python main.py --detail=1 --shop_id=12345(爬取指定店铺详情)
- 仅爬评论:python main.py --review=1 --shop_id=12345(仅获取评论数据)
4.3 高级功能启用
- 启用代理:修改config.ini中use_proxy=True并填写代理信息
- 切换存储:将save_mode改为mongo并配置mongo_path
- 批量爬取:设置need_pages=0爬取所有搜索结果(谨慎使用)
常见问题速查表
Q: 运行时提示"Font mapping error"怎么办? A: 执行python -c "from function.get_encryption_requests import get_font_msg; get_font_msg()"更新字体映射
Q: 搜索结果总是重复怎么办? A: 在config.ini中设置need_first=False,禁用首条结果优先模式
Q: MongoDB连接失败? A: 检查mongo_path格式是否正确(例:mongodb://localhost:27017)
Q: 爬取速度突然变慢? A: 查看requests_times配置,建议新手使用默认值"1,2;3,5"
Q: 评论数据不完整? A: 确认config.ini中use_cookie_pool是否设为True,单Cookie只能获取前5页评论
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust098- DDeepSeek-V4-ProDeepSeek-V4-Pro(总参数 1.6 万亿,激活 49B)面向复杂推理和高级编程任务,在代码竞赛、数学推理、Agent 工作流等场景表现优异,性能接近国际前沿闭源模型。Python00
MiMo-V2.5-ProMiMo-V2.5-Pro作为旗舰模型,擅⻓处理复杂Agent任务,单次任务可完成近千次⼯具调⽤与⼗余轮上 下⽂压缩。Python00
GLM-5.1GLM-5.1是智谱迄今最智能的旗舰模型,也是目前全球最强的开源模型。GLM-5.1大大提高了代码能力,在完成长程任务方面提升尤为显著。和此前分钟级交互的模型不同,它能够在一次任务中独立、持续工作超过8小时,期间自主规划、执行、自我进化,最终交付完整的工程级成果。Jinja00
Kimi-K2.6Kimi K2.6 是一款开源的原生多模态智能体模型,在长程编码、编码驱动设计、主动自主执行以及群体任务编排等实用能力方面实现了显著提升。Python00
MiniMax-M2.7MiniMax-M2.7 是我们首个深度参与自身进化过程的模型。M2.7 具备构建复杂智能体应用框架的能力,能够借助智能体团队、复杂技能以及动态工具搜索,完成高度精细的生产力任务。Python00