一套完整的商家公开数据采集与统计分析系统,支持按城市、区域、商家类型(餐饮、酒店、加油站、商场、教育机构等)多维度自动采集Yelp平台上的商家信息,包括名称、地址、联系电话、用户评分、评论数量、营业时间、商家官网等。系统可满足市场调研、竞品分析、商圈评估、选址决策等商业需求,采集结果自动去重、清洗,并导出为Excel/CSV等结构化文件。帮助企业快速获取大规模、高可信度的本地商家数据。
使用 Python 编写爬虫,以 Playwright 为核心引擎处理页面的动态渲染。
Playwright 启动 Chromium 实例时,通过 launch 参数禁用自动化特征(如 --disable-blink-features=AutomationControlled),并利用 add_init_script 注入脚本抹除 navigator.webdriver 属性。
针对平台的反爬机制,重点实施了以下绕过策略:
模拟真实设备指纹
通过 Playwright 的 context 配置,随机化视口大小、时区、语言、地理位置等浏览器环境。
使用第三方库 playwright-stealth 或自定义脚本,伪造 Canvas 指纹、WebGL 渲染器、字体列表、音频上下文等硬件指纹特征,避免被识别为自动化工具。
每次创建上下文时,随机生成 User-Agent(匹配主流 Chrome 版本)并携带真实的 Accept-Language、Sec-Ch-UA 等请求头。
动态代理 IP 轮换
集成住宅代理池,为每个 Playwright 上下文绑定不同的代理 IP。
实现代理健康检查机制:对连续失败 3 次的 IP 自动剔除,并从池中获取新 IP 重试。
针对同一商家的分页请求,维持 IP 粘性(sticky session),避免频繁切换 IP 触发风控。
请求行为模拟
在两次请求之间加入随机延迟(2-5 秒),并模拟人类鼠标移动轨迹与滚动行为。
通过上述等手段,系统能够稳定采集公开数据,成功绕过目标站点的反爬策略。