软件功能、核心功能模块的介绍
本系统包含四大核心功能模块:
(1)新闻数据采集模块:基于Requests和BeautifulSoup库实现网络爬虫,能够从微软新闻网站(news.microsoft.com)自动抓取最新新闻标题和正文内容。该模块具备多级容错机制,当网络异常或页面结构变化时,自动切换至备用数据源,确保系统稳定运行。
(2)中文分词与关键词提取模块:使用Jieba分词库对采集的新闻文本进行精确分词,结合自定义停用词库(包含200余个虚词和常见词),过滤掉无实际意义的词语。通过Counter工具进行词频统计,提取出现频率最高的关键词作为分析基础。
(3)词云可视化生成模块:基于WordCloud库将关键词数据转化为可视化词云图片。该模块实现了跨平台字体自动检测功能,优先使用黑体、微软雅黑等中文字体确保中文正常显示,并设计了PIL备用方案作为最终保障。
(4)Web应用与交互模块:采用Flask框架构建轻量级Web服务,提供RESTful API接口。前端采用响应式设计,支持PC端和移动端访问。用户点击生成按钮后,系统异步执行后台任务,通过状态轮询机制实时反馈处理进度,最终展示词云图片和关键词分析结果。
3、业务流程、功能路径描述
用户访问系统首页(http://127.0.0.1:5050),页面展示控制面板和词云展示区。用户点击“开始抓取新闻并生成词云”按钮后,系统触发后台异步任务:首先启动爬虫模块访问微软新闻网站,抓取15条最新新闻的标题和正文内容,合并生成约5000-10000字符的文本数据;随后调用分词模块对文本进行切词和停用词过滤,统计出前100个高频关键词;接着调用词云生成模块,根据词频数据生成800×600像素的词云图片并保存至static目录;最后更新处理状态为完成。前端通过每2.5秒轮询状态接口,实时显示“抓取中”、“分析中”、“生成中”等进度信息,任务完成后自动加载词云图片并展示关键词列表。整个流程约1-2分钟,用户无需等待即可获得可视化分析结果。
1、整体架构和设计思路,不同模块使用的技术栈
系统采用三层架构设计,实现数据采集、业务处理和用户展示的职责分离。
数据采集层:使用Requests库发起HTTP请求,设置User-Agent模拟浏览器访问;BeautifulSoup库解析HTML文档,通过多级CSS选择器组合智能提取新闻链接和正文内容;time模块控制请求间隔,避免对目标网站造成压力。
业务处理层:Jieba分词库实现中文分词,采用精确模式确保分词准确性;自定义停用词库过滤虚词和常见词;Counter工具进行词频统计,提取Top100关键词;WordCloud库根据词频生成词云,通过font_path参数指定中文字体路径。
Web展示层:Flask框架构建RESTful API,提供/generate、/status、/wordcloud、/keywords四个核心路由;采用异步线程处理耗时任务,避免阻塞主线程;前端使用原生HTML/CSS/JavaScript,实现响应式布局和AJAX轮询机制;Jinja2模板引擎渲染动态页面。
数据流向:用户请求→Flask路由→后台线程→爬虫模块→分词模块→词云模块→静态文件→前端展示。
2、负责模块和结果
独立完成了以下核心模块的开发:
(1)新闻爬虫模块(100%完成)
实现了完整的RealNewsCrawler类,包含fetch_news_links、fetch_news_content、get_all_news_text三个核心方法
设计了7种CSS选择器的组合策略,提高网页解析成功率至90%以上
实现了三级容错机制:网络请求失败时自动重试、解析失败时切换备用选择器、完全失败时使用内置模拟数据
代码量约180行,支持抓取15条新闻、每条新闻限制20段正文
(2)词云生成模块(80%完成,队友协助20%)
实现了跨平台字体自动检测功能,扫描Windows系统字体目录,优先使用黑体、微软雅黑等4种常见字体
设计了三级降级方案:WordCloud字体模式→WordCloud默认模式→PIL手绘模式,确保100%生成成功
优化词云参数配置:width=1000、height=700、max_words=200、colormap='viridis',提升视觉效果
生成的关键词文件包含词频统计和生成时间,便于后续分析
(3)系统集成与调试(100%完成)
完成了Flask应用的异步任务处理机制,使用threading.Thread实现后台任务
设计了全局状态字典processing_status,包含7个状态字段实时监控处理进度
编写了约1200行的技术文档和用户指南,包含代码注释、安装说明和故障排查指南