1、立项背景和目标:电商图书数据分散在各平台接口中,缺乏统一的数据采集与查询方案。本项目目标是从当当网电子书频道批量采集图书数据,构建从爬取到查询到可视化的完整数据服务管线。
2、核心功能模块:①爬虫模块负责从当当网JSON接口抓取书名、价格、封面图片等字段,支持自动翻页;②API服务模块提供分页查询、关键词搜索、价格筛选、统计聚合4个RESTful接口;③可视化面板模块展示图书总数、均价、最高/最低价等指标卡片,支持实时筛选和价格分布图表。
3、业务流程:启动爬虫→解析JSON接口提取数据→下载封面图片→存入SQLite数据库(幂等去重)→通过FastAPI对外提供查询接口→Streamlit面板读取数据库生成可视化报表。共采集1017条图书数据,价格区间¥0.36~¥2480。
1、整体架构采用采集→存储→API→可视化四层设计。采集层用Scrapy框架+jsonpath提取字段;存储层用SQLite+UNIQUE约束实现去重;API层用FastAPI自动生成Swagger文档,服务端口8001;可视化层用Streamlit+pandas+柱状图渲染,通过@st.cache_data缓存查询结果避免重复请求。
2、我负责全部模块开发。爬虫模块实现自动翻页抓取1017条数据;API模块实现4个接口并自动生成交互式文档;可视化面板实现4个指标卡片+可搜索表格+价格分布柱状图+价格区间滑块筛选;额外开发了统一启动脚本(start.bat),一键运行4个组件,并配置了独立虚拟环境(setup.bat)实现环境隔离。
3、遇到的难点:①当当网接口返回JSON格式嵌套较深,用jsonpath批量提取解决;②数据去重问题,通过UNIQUE约束+INSERT OR REPLACE实现幂等写入;③Streamlit每次交互都会重新查询数据库,通过@st.cache_data装饰器缓存结果解决性能问题;④pandas 3.x与streamlit版本冲突,通过锁定pandas 2.2.2和numpy 1.26.4解决