1、立项背景和目标:面向个人投资者的A股市场监控需求,开发一个集数据采集、存储、分析、可视化于一体的桌面应用,帮助用户实时掌握沪深京A股全市场行情动态,辅助投资决策。
2、软件功能:①全市场股票数据采集,覆盖沪市、深市、北交所共5000+只股票;②阶梯分类统计,按涨停、大涨、小涨、小跌、大跌跌停五级自动归类;③市场概览仪表盘,展示股票总数、平均涨幅、最大涨跌幅、总成交额;④涨跌幅TOP10排行榜;⑤个股详情视图,支持7天/30天/90天/365天价格趋势、涨跌幅走势、成交量柱状图;⑥股票列表分页查询,支持阶梯筛选、关键词搜索、多字段排序。
3、业务流程:用户启动程序后浏览器自动打开监控页面,点击手动爬取触发Selenium打开Chrome浏览器,完成滑块验证码后系统自动通过JSONP协议调用东方财富API获取全量股票数据,存入SQLite数据库,前端实时刷新展示图表和数据表格。
1、整体架构:采用前后端分离全栈架构。后端使用FastAPI框架提供8个RESTful API接口(股票查询、统计聚合、爬虫控制),SQLite数据库按code+crawl_date联合唯一约束去重存储,建立4个索引支撑多维度查询。前端使用原生HTML+CSS+ECharts构建三视图切换界面(概览/列表/详情)。桌面启动器使用Tkinter开发,日志重定向到GUI文本框,双击即用无需命令行。
2、我的职责:独立完成全部模块开发,包括爬虫引擎、API设计、数据库建表、前端页面、可视化图表、GUI启动器。
3、技术难点与解决方案:东方财富服务器做了TLS指纹检测,requests和curl_cffi库均被拒绝连接。解决方案是在浏览器内通过execute_script注入script标签发起JSONP请求,利用script标签不受同源策略约束的特性绕过CORS限制,同时请求走浏览器真实网络栈使TLS指纹与Chrome完全一致。验证码交互采用threading.Event实现异步阻塞机制,用户在网页点击确认后释放阻塞继续爬取。