本系统是一套面向数据分析场景的多平台数据采集工具集,包含4个独立的数据采集模块:
1. A股数据采集模块:自动采集沪深A股股票列表、历史K线数据和实时行情。数据来源于腾讯和新浪公开API,支持多数据源自动切换,单次可采集全部4000+只股票的基础信息及实时价格。
2. B站数据采集模块:采集B站热门视频排行、UP主粉丝与播放数据、关键词搜索结果。可用于内容趋势分析、UP主商业价值评估。
3. 豆瓣Top250采集模块:采集豆瓣电影Top250和书籍Top250的完整榜单,包含评分、评价人数、简介、排名等信息,支持影评分析和好书推荐场景。
4. 链家二手房采集模块:支持北京、上海、广州、深圳、成都等10个城市的二手房数据采集,包含房价、面积、户型、区域、关注度等信息,可用于房地产分析。
所有模块输出为标准Excel格式(.xlsx),同时兼容CSV导出,方便后续数据分析和可视化。系统内置请求频率控制和指数退避重试机制,确保稳定采集。
技术架构:Python 3 + requests(curl_cffi版)+ BeautifulSoup 4 + openpyxl
1. TLS指纹伪装:使用curl_cffi库的impersonate="chrome120"模式,模拟Chrome
120浏览器的TLS握手指纹,有效绕过目标网站的反爬检测。这是本项目的核心技术难点,普通requests库在面对B站、链家等有反爬机制的网站时会被直接拦截。
2. 多数据源切换(A股模块):优先使用腾讯证券API获取股票列表,失败时自动切换到新浪API。实时行情接口支持批量查询,采用分批请求策略(每批20只),既保证速度又避免触发频率限制。
3. BeautifulSoup页面解析(豆瓣、链家模块):使用CSS选择器精确定位目标数据,处理分页逻辑(豆瓣10页×25条,链家最多100页×30条),对页面结构变化具备一定容错能力。
4. Session管理(B站、链家模块):通过requests.Session维持Cookie和会话状态,首次请求首页获取必要Cookie后再访问数据接口,模拟真实用户浏览行为。
5. Excel输出:使用openpyxl生成.xlsx文件,自动设置列宽适配中文内容,文件名包含时间戳便于版本管理。如openpyxl未安装则自动降级为CSV格式(UTF-8 with BOM,兼容Excel直接打开)。
6. 请求控制:每个模块配置了MIN_DELAY/MAX_DELAY随机延迟参数,配合指数退避重试(最多3次),平衡采集效率与反爬风险。