大众点评爬虫实战指南:从配置到数据采集的全流程解析
一、核心引擎模块:爬虫的"中央控制系统"
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页评论
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



