F004 新闻可视化系统爬虫更新数据+ flask + mysql架构

F004 新闻可视化系统 flask + mysql架构

文章结尾部分有CSDN官方提供的学长 联系方式名片

博主开发经验15年,全栈工程师,专业搞定大模型、知识图谱、算法和可视化项目和比赛

关注B站,有好处!

编号:F004

视频

python+flask新闻爬虫可视化系统

✅ 可以根据观察者网站来 获取数据

✅ 爬虫: Requests + etree + Xpah

✅ 可视化: Flask + Echarts + WordCloud

✅ 文本分析:jieba分词

✅ 数据库: MySQL

系统设计

系统介绍

系统目标:实现对观察者网新闻的自动化抓取、结构化存储、智能搜索及多维度可视化分析,为时事研究提供数据支持。

代码目录:

核心功能模块

  1. 数据爬取引擎
    来源:定向爬取观察者网全站新闻(含首页/分类/专题)
    技术栈:
    Requests 模拟HTTP请求(处理反爬策略)
    lxml.etree + XPath 精准解析HTML(标题/正文/作者/发布时间/标签)
    输出:结构化元数据+原始HTML存档
  2. 文本处理流水线
    分词与清洗:
    jieba分词 实现中文语义切分(支持自定义词典)
    停用词过滤 + 关键词提取(TF-IDF算法)
    数据增强:自动生成新闻摘要 & 情感倾向评分
  3. 数据库管理
    架构:MySQL关系型数据库(5表结构)
    新闻主表(url, title, publish_time, author)
    内容表(正文+分词结果)
    热词统计表(动态更新)
    操作:
    增量更新(基于时间戳去重)
    索引优化(加速标题/内容检索)
  4. 搜索与展示系统
    新闻列表:


    新闻搜索结果:

全文搜索:

支持关键词布尔检索(SQL LIKE + 分词匹配)

结果高亮显示

  1. 可视化中心
    交互式图表(Flask + Echarts):


    关键词分析

词云生成器(WordCloud动态渲染):

全局高频词云

单篇新闻关键词聚焦

支持自定义配色/形状模板

python 复制代码
# 连接数据库并提取数据库内容
def get_datalist():
    datalist = []
    cnn = pymysql.connect(host=HOST, user=USER, password=PASSWORD, port=PORT, database=DATABASE,
                          charset=CHAREST)
    cursor = cnn.cursor()
    sql = ' select * from guanchazhe ORDER BY publish_time DESC'
    cursor.execute(sql)
    for item in cursor.fetchall():
        datalist.append(item)
    cursor.close()
    cnn.close()
    return datalist


# 对数据库文本内容进行分词,并返回 data_inf0 = [新闻数,词云数,词汇数,作者人数] ->首页展示的三个内容
def get_datalist_info(datalist):
    text = ""
    for item in datalist:
        text = text + item[4]

    # 分词
    cut = jieba.cut(text)
    string = ' '.join(cut)
    data_info = [len(datalist), 1, len(string), 1]
    return data_info,string


# 对输入文本进行分词,并返回词汇权重
def get_word_weights(string, topK):
    words = []
    weights = []
    for x, w in jieba.analyse.textrank(string, withWeight=True, topK=topK):
        words.append(x)
        weights.append(w)
    return words,weights


# 文本关键字提取
def get_keyword_from_content(content):
    print(content)
    cut = jieba.cut(content)
    string = ' '.join(cut)
    words,_=get_word_weights(string, topK=5)
    return words.append('(自动生成)')
相关推荐
小霞在敲代码18 分钟前
MySQL主从同步原理
mysql
Morpheon29 分钟前
SQL窗口函数中的排名函数详解:从基础到高级应用
数据库·sql·mysql
lang201509281 小时前
MySQL I/O容量调优终极指南
数据库·mysql
kobe_OKOK_1 小时前
mysql 创建容器和启动远程链接
数据库·mysql
Q_Q5110082853 小时前
python+django/flask在线问诊系统 医院就诊 医生推荐系统
spring boot·python·django·flask·node.js·php
Z_z在努力5 小时前
【MySQL 高阶】MySQL 架构与存储引擎全面详解
数据库·mysql·架构
全栈工程师修炼指南5 小时前
DBA | MySQL 数据库基础查询语句学习实践笔记
数据库·笔记·学习·mysql·dba
veminhe6 小时前
MySQL 索引失效原理剖析:别让 “加速键” 变成 “绊脚石”
mysql
奥尔特星云大使6 小时前
mysql重置管理员密码
linux·运维·数据库·mysql·centos
我好饿16 小时前
MySQL 主主复制 + keepalived + HAProxy
mysql·负载均衡