Skip to content

afishing/Visualized_News_System

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

基于 AI 的新闻热点聚合及可视化系统

数据库课程设计,用pyqt搭建的新闻聚合数据可视化界面,用到的技术栈有pyqt、pymysql、jieba、pandas、matlbplot、request,爬取的网站有wangyi和xinlang,结果展示词云、新闻来源比例饼图、top评论数新闻、新闻发布时间集中区间等等。

本项目是一个基于 Python + PyQt5 + MySQL 的新闻聚合与可视化分析系统,支持从网易、新浪等门户网站爬取新闻数据,存入数据库进行管理(增删改查),并基于 matplotlibwordcloud 对新闻数据进行可视化分析(词云、饼图、时段分布、热点 TOP5 等)。


一、功能简介

  1. 新闻爬取
    • 网易新闻爬取(wangyi_crawler.py
    • 新浪新闻爬取(xinlang_crawler.py
  2. 数据库管理database.py
    • 新闻数据的插入、查询、修改、删除
    • 按标题模糊查询、按 ID 查询、查找评论数最多的新闻等
  3. 可视化分析MyWindow.py
    • 网易 / 新浪新闻标题词云
    • 双来源新闻数量占比饼图
    • 24 小时新闻发布分布柱状图
    • TOP5 新闻来源饼图
    • 热点新闻 TOP5(按评论数)
  4. 图形界面(PyQt5)
    • 主界面:system.ui / system.py / MyWindow.py
    • 用户系统:user_sys/(登录、菜单等)
    • 新闻分类管理:category_sys/
    • 新闻来源管理:source_sys/

二、项目结构

db_expertime/
├── Main.py                        # 程序主入口
├── MyWindow.py                    # 主窗口逻辑(绑定按钮、可视化、数据操作)
├── system.py / system.ui          # 主界面 UI
├── database.py                    # 数据库访问层(CRUD)
├── wangyi_crawler.py              # 网易新闻爬虫
├── xinlang_crawler.py             # 新浪新闻爬虫
├── show.py / test.py              # 辅助 / 测试脚本
├── news_db.sql                    # 数据库建表与初始数据脚本
├── user_sys/                      # 用户登录与菜单子系统
│   ├── login.py / login.ui
│   ├── sys_menu.py / sys_menu.ui
│   └── MainWindow.py
├── category_sys/                  # 新闻分类管理子系统
├── source_sys/                    # 新闻来源管理子系统
├── wordcloud_wy.png               # 网易词云图输出
├── wordcloud_xl.png               # 新浪词云图输出
├── pie_chart.png                  # 来源占比饼图输出
├── news_analysis.png              # 综合分析图输出
└── 基于AI的新闻热点聚合及可视化系统开发说明书.docx

三、运行环境

  • 操作系统:Windows 10 / 11
  • Python:3.8 及以上
  • 数据库:MySQL 8.0
  • 字体:需要 simhei.ttf(黑体,用于中文词云与 matplotlib 显示)

依赖安装

pip install PyQt5 pymysql pandas matplotlib wordcloud DrissionPage

四、数据库配置

  1. 在 MySQL 中新建数据库:

    CREATE DATABASE news_db DEFAULT CHARACTER SET utf8mb4;
  2. 导入项目根目录下的 news_db.sql,会创建以下三张表:

    • news:新闻主表(nid / sid / cid / title / time / content / link / detail / source / imgurl / tienum / keywords)
    • new_category:新闻分类表(cid / new_cname / addtime)
    • new_source:新闻来源表(sid / sname / addtime)
  3. 修改 database.py 中的数据库连接信息为你本地的配置:

    self.conn = pymysql.connect(
        host='localhost',
        user='root',
        password='你的数据库密码',
        database='news_db',
        charset='utf8mb4'
    )

五、运行方式

在项目根目录下执行:

python Main.py

程序入口位于 Main.py,会加载 MyWindow 并启动 PyQt5 主界面。


六、核心功能按钮说明

主界面按钮(在 MyWindow.init_ui 中绑定):

按钮 功能
init_btn 生成网易 / 新浪词云 + 来源饼图
init_btn_2 加载并展示全部新闻数据表
show_btn 生成聚合分析大图(24h/TOP5 等)
button_new_2 爬取网易新闻并入库
button_new_3 爬取新浪财经新闻并入库
pushButton 根据表格修改更新数据库
btn_find 按 nid 查询新闻
btn_insert 手动插入一条新闻
pushButton_2 按标题模糊查询
pushButton_3 查询评论数最高的热点新闻
表格内 删除 按钮 删除对应行新闻

七、可视化输出

运行相关功能后会在项目根目录生成以下图片:

  • wordcloud_wy.png:网易新闻标题词云
  • wordcloud_xl.png:新浪新闻标题词云
  • pie_chart.png:网易 / 新浪新闻数量占比饼图
  • news_analysis.png:24 小时发布分布、TOP5 来源、热点 TOP5 综合图

八、注意事项

  1. 爬虫部分依赖 DrissionPage / 网络请求,若爬取失败请检查网络与目标站点结构是否变动。
  2. 词云生成依赖系统字体 simhei.ttf,请确保该字体可被程序访问(放在项目根目录或系统字体目录)。
  3. 由于 database.py 中每次操作都会新建 Database() 连接,运行大批量操作时建议自行改造为连接复用。
  4. 数据库密码等敏感信息已在 database.py 中硬编码,生产使用请改为配置文件或环境变量。

九、参考资料

  • 项目详细设计见:《基于AI的新闻热点聚合及可视化系统开发说明书.docx》
  • 演示视频:测试视频.mp4

About

数据库课程设计:”基于 AI 的新闻热点聚合及可视化系统

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages