股票数据获取:实时抓取A股今日涨幅前30和跌幅前30的股票
股票代码、名称、最新价、涨跌额、涨跌幅
热门板块分析:获取近30天热门板块数据
板块名称、热度(涨跌幅)、排名
双模式运行:
API模式:直接调用东方财富API(速度快)
Selenium模式:浏览器模拟(备用方案,抗检测)
自动切换:API失败时无缝切换到Selenium
防检测机制:
随机User-Agent、代理支持
执行防检测JS脚本(隐藏WebDriver特征)
广告拦截JS脚本
验证码处理框架(预留接口)
定时刷新:每10秒自动更新数据,终端实时显示
EastMoneyCrawler/
├── 数据采集层 (get_stocks_by_api/get_sectors_by_selenium等)
├── 防检测层 (execute_js_scripts/随机化处理)
├── 业务逻辑层 (自动切换/数据整合)
└── 展示层
1.API数据获取 Requests 2.31+ JSON解析 高效获取结构化数据
2.浏览器自动化 Selenium 4.15+ ChromeDriver 备用方案,应对API限制
3.防检测系统 JavaScript ES6+ DOM操作、事件模拟 隐藏自动化特征
4.广告拦截 CSS选择器 请求拦截重写 提升爬取效率
5.配置管理 Python字典 环境变量 灵活参数调整
6.日志系统 logging模块 多级日志记录 故障排查与监控
7.验证码框架 插件式设计 第三方API接口 处理复杂验证场景
2. 防检测系统三层架构
指纹层:覆盖12个浏览器检测点(webdriver、plugins、mimeTypes等)
行为层:模拟鼠标移动(随机轨迹)、键盘输入(A-Z随机)
请求层:轮换User-Agent、支持代理池、随机请求延迟
我的负责模块与量化成果
一、主要负责模块
核心爬虫架构设计(100%):定义类结构、接口规范、数据流
双模式自动切换系统(100%):实现API优先+Selenium备用的智能决策
防检测集成框架(85%):JS脚本注入执行、行为模拟调度
数据解析兼容层(90%):多选择器策略、异常容错处理
配置文件管理系统(100%):参数外部化、环境适配
遇到的难点与解决方案
难点一:网站反爬虫检测高强度
问题表现:
初期直接使用Selenium,封禁率达70%
API请求频率限制(>5次/分钟触发验证码)
浏览器指纹检测(webdriver、plugins等12个检测点)
解决方案:
三重防检测体系:
javascript
// 1. 指纹隐藏(覆盖12个检测点)
难点二:API稳定性与数据完整性
问题表现:
东方财富API偶发性返回空数据(约15%概率)
接口参数复杂,文档不完整
数据字段映射关系模糊
# API失败自动切换Selenium
if (not gainers or not losers) and not self.api_failed:
self.api_failed = True
return self.get_top_stocks() # 递归调用,自动走Selenium分支
Selenium资源管理与性能
问题表现:
ChromeDriver内存泄露(运行2小时后内存占用>1GB)
浏览器启动慢(冷启动>15秒)
广告元素干扰数据定位
解决方案:
广告拦截JS注入:
Driver生命周期管理: