【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博内容IP地图可视化分析实现

大家好,我是java1234_小锋老师,最近写了一套【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts)视频教程,持续更新中,计划月底更新完,感谢支持。今天讲解微博内容IP地图可视化分析实现

视频在线地址:

2026版【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts+爬虫) 视频教程 (火爆连载更新中..)_哔哩哔哩_bilibili

课程简介:

​​

本课程采用主流的Python技术栈实现,Mysql8数据库,Flask后端,Pandas数据分析,前端可视化图表采用echarts,以及requests库,snowNLP进行情感分析,词频统计,包括大量的数据统计及分析技巧。

实现了,用户登录,注册,爬取微博帖子和评论信息,进行了热词统计以及舆情分析,以及基于echarts实现了数据可视化,包括微博文章分析,微博IP分析,微博评论分析,微博舆情分析。最后也基于wordcloud库实现了词云图,包括微博内容词云图,微博评论词云图,微博评论用户词云图等功能。

微博内容IP地图可视化分析实现

微博IP可视化分析主要实现微博作者IP位置以及评论作者IP位置功能,通过颜色深浅来直观的看分布情况。

首先,开发中国地图可视化必须先引入china.js文件,我们前面已经引入过了

包括base.html

然后把微博IP可视化分析静态网页代码ipDataAnalysis.html放到templates下:

复制代码
{% extends 'base.html' %}
{% block title %}IP位置分析{% endblock %}
{% block content %}
    <div class="container-fluid">
        <div class="row">
            <div class="col-md-12 mb-4 mt-1">
                <div class="d-flex flex-wrap justify-content-between align-items-center">
                    <h4 class="font-weight-bold">IP位置分析</h4>
​
                </div>
            </div>
        </div>
​
        <div class="row">
            <div class="col-lg-12">
                <div class="card">
                    <div class="card-header d-flex justify-content-between">
                        <div class="header-title">
                            <h4 class="card-title">微博作者IP位置分析图</h4>
                        </div>
                    </div>
                    <div class="card-body">
                        <div id="wzMain" style="width:100%;height:750px">
​
                        </div>
                    </div>
                </div>
​
            </div>
            <div class="col-lg-12">
                <div class="card">
                    <div class="card-header d-flex justify-content-between">
                        <div class="header-title">
                            <h4 class="card-title">评论作者IP位置分析图</h4>
                        </div>
                    </div>
                    <div class="card-body">
                        <div id="plMain" style="width:100%;height:750px">
​
                        </div>
                    </div>
                </div>
​
            </div>
        </div>
​
    </div>
{% endblock %}
{% block echarts %}
​
{% endblock %}

后端我们要搞个中国省市县的map工具类 mapUtil.py

复制代码
cityList = [
    {'province': '北京', 'city': ['北京市']},
    {'province': '天津', 'city': ['天津市']},
    {'province': '河北',
     'city': ['石家庄市', '唐山市', '秦皇岛市', '邯郸市', '邢台市', '保定市', '张家口市', '承德市', '沧州市', '廊坊市',
              '衡水市']},
    {'province': '山西',
     'city': ['太原市', '大同市', '阳泉市', '长治市', '晋城市', '朔州市', '晋中市', '运城市', '忻州市', '临汾市',
              '吕梁市']},
    {'province': '内蒙古',
     'city': ['呼和浩特市', '包头市', '乌海市', '赤峰市', '通辽市', '鄂尔多斯市', '呼伦贝尔市', '巴彦淖尔市',
              '乌兰察布市', '兴安盟', '锡林郭勒盟', '阿拉善盟']},
    {'province': '辽宁',
     'city': ['沈阳市', '大连市', '鞍山市', '抚顺市', '本溪市', '丹东市', '锦州市', '营口市', '阜新市', '辽阳市',
              '盘锦市', '盘锦市', '朝阳市', '葫芦岛市']},
    {'province': '吉林',
     'city': ['长春市', '吉林市', '四平市', '辽源市', '通化市', '白山市', '松原市', '白城市', '延边']},
    {'province': '黑龙江',
     'city': ['哈尔滨市', '齐齐哈尔市', '鸡西市', '鹤岗市', '双鸭山市', '大庆市', '伊春市', '佳木斯市', '七台河市',
              '牡丹江市', '黑河市', '绥化市',
              '大兴安岭地区', ]},
    {'province': '上海', 'city': ['上海市']},
    {'province': '江苏',
     'city': ['南京市', '无锡市', '徐州市', '常州市', '苏州市', '南通市', '连云港市', '淮安市', '盐城市', '扬州市',
              '镇江市', '泰州市', '宿迁市']},
    {'province': '浙江',
     'city': ['杭州市', '宁波市', '温州市', '嘉兴市', '湖州市', '绍兴市', '金华市', '衢州市', '舟山市', '台州市',
              '丽水市']},
    {'province': '安徽',
     'city': ['合肥市', '芜湖市', '蚌埠市', '淮南市', '马鞍山市', '淮北市', '铜陵市', '安庆市', '黄山市', '滁州市',
              '阜阳市', '宿州市', '六安市', '亳州市',
              '池州市', '宣城市']},
    {'province': '福建',
     'city': ['福州市', '厦门市', '莆田市', '三明市', '泉州市', '漳州市', '南平市', '龙岩市', '宁德市']},
    {'province': '江西',
     'city': ['南昌市', '景德镇市', '萍乡市', '九江市', '新余市', '鹰潭市', '赣州市', '吉安市', '宜春市', '抚州市',
              '上饶市']},
    {'province': '山东',
     'city': ['济南市', '青岛市', '淄博市', '枣庄市', '东营市', '烟台市', '潍坊市', '济宁市', '泰安市', '威海市',
              '日照市', '莱芜市', '临沂市', '德州市',
              '聊城市', '滨州市', '菏泽市']},
    {'province': '河南',
     'city': ['郑州市', '开封市', '洛阳市', '平顶山市', '安阳市', '鹤壁市', '新乡市', '焦作市', '济源市', '濮阳市',
              '许昌市', '漯河市', '三门峡市', '南阳市',
              '商丘市', '信阳市', '周口市', '驻马店市']},
    {'province': '湖北',
     'city': ['武汉市', '黄石市', '十堰市', '宜昌市', '襄阳市', '鄂州市', '荆门市', '孝感市', '荆州市', '黄冈市',
              '咸宁市', '随州市', '恩施', '仙桃市',
              '潜江市', '天门市', '神农架林区']},
    {'province': '湖南',
     'city': ['长沙市', '株洲市', '湘潭市', '衡阳市', '邵阳市', '岳阳市', '常德市', '张家界市', '益阳市', '郴州市',
              '永州市', '怀化市', '娄底市', '湘西']},
    {'province': '广东',
     'city': ['广州市', '韶关市', '深圳市', '珠海市', '汕头市', '佛山市', '江门市', '湛江市', '茂名市', '肇庆市',
              '惠州市', '梅州市', '汕尾市', '河源市',
              '阳江市', '清远市', '东莞市', '中山市', '东沙群岛', '潮州市', '揭阳市', '云浮市']},
    {'province': '广西',
     'city': ['南宁市', '柳州市', '桂林市', '梧州市', '北海市', '防城港市', '钦州市', '贵港市', '玉林市', '百色市',
              '贺州市', '河池市', '来宾市', '崇左市']},
    {'province': '海南',
     'city': ['海口市', '三亚市', '三沙市', '五指山市', '琼海市', '儋州市', '文昌市', '万宁市', '东方市', '定安县',
              '屯昌县', '澄迈县', '临高县', '白沙',
              '昌江', '乐东', '陵水', '保亭', '琼中']},
    {'province': '重庆', 'city': ['重庆市']},
    {'province': '四川',
     'city': ['成都市', '自贡市', '攀枝花市', '泸州市', '德阳市', '绵阳市', '广元市', '遂宁市', '内江市', '乐山市',
              '南充市', '眉山市', '宜宾市', '广安市',
              '达州市', '雅安市', '巴中市', '资阳市', '阿坝', '甘孜', '凉山']},
    {'province': '贵州',
     'city': ['贵阳市', '六盘水市', '遵义市', '安顺市', '铜仁市', '黔西南', '毕节市', '黔东南', '黔南']},
    {'province': '云南',
     'city': ['昆明市', '曲靖市', '玉溪市', '保山市', '昭通市', '丽江市', '普洱市', '临沧市', '楚雄', '红河', '文山',
              '西双版纳', '大理', '德宏', '怒江',
              '迪庆']},
    {'province': '西藏自治区',
     'city': ['拉萨市', '昌都地区', '山南地区', '日喀则地区', '那曲地区', '阿里地区', '林芝地区']},
    {'province': '陕西',
     'city': ['西安市', '铜川市', '宝鸡市', '咸阳市', '渭南市', '延安市', '汉中市', '榆林市', '安康市', '商洛市']},
    {'province': '甘肃',
     'city': ['兰州市', '嘉峪关市', '金昌市', '白银市', '天水市', '武威市', '张掖市', '平凉市', '酒泉市', '庆阳市',
              '定西市', '陇南市', '临夏', '甘南']},
    {'province': '青海', 'city': ['西宁市', '海东市', '海北', '黄南', '海南', '果洛', '玉树', '海西']},
    {'province': '宁夏回族自治区', 'city': ['银川市', '石嘴山市', '吴忠市', '固原市', '中卫市']},
    {'province': '新疆维吾尔自治区',
     'city': ['乌鲁木齐市', '克拉玛依市', '吐鲁番地区', '哈密地区', '昌吉', '博尔塔拉', '巴音郭楞', '阿克苏地区',
              '克孜勒苏柯尔克孜自治州', '喀什地区', '和田地区', '伊犁',
              '塔城地区', '阿勒泰地区', '石河子市', '阿拉尔市', '图木舒克市', '五家渠市']},
    {'province': '台湾',
     'city': ['台北市', '高雄市', '台南市', '台中市', '金门县', '南投县', '基隆市', '新竹市', '嘉义市', '新北市',
              '宜兰县', '新竹县', '桃园县', '苗栗县',
              '彰化县', '嘉义县', '云林县', '屏东县', '台东县', '花莲县', '澎湖县', '连江县']},
    {'province': '香港特别行政区', 'city': ['香港岛', '香港岛', '新界']},
    {'province': '澳门特别行政区', 'city': ['澳门', '离岛']}
]

page.py里实现ipDataAnalysis方法:

复制代码
@pb.route('/ipDataAnalysis')
def ipDataAnalysis():
    """
    IP地址数据分析
    :return:
    """
    cityDic = {}  # 微博文章作者IP
    cityList = mapUtil.cityList
    articleList = articleDao.getAllArticle()
    for article in articleList:
        if article[5]:
            for city in cityList:
                if city['province'].find(article[5]) != -1:
                    if cityDic.get(city['province'], -1) == -1:
                        cityDic[city['province']] = 1
                    else:
                        cityDic[city['province']] += 1
    articleCityDicList = [{
        'name': x[0],
        'value': x[1]
    } for x in cityDic.items()]
    return render_template('ipDataAnalysis.html',
                           articleCityDicList=articleCityDicList)

前端的我们加下微博内容IP分析代码:

复制代码
<script>
​
        function formatValue(value) {
            if (value) {
                return value
            } else {
                return 0
            }
        }
​
        var chartDom = document.getElementById('wzMain');
        var myChart = echarts.init(chartDom);
        var option;
​
        option = {
            title: {
                text: '文章IP发布地址地图',
                left: 'center',
                textStyle: {
                    color: '#333',
                    fontWeight: "bold"
                }
            },
            tooltip: {
                trigger: 'item',
                formatter: function (params) {
                    return params.name + '<br>微博发布个数:' + formatValue(params.value) + ' 个'
                }
            },
            visualMap: {
                min: 0,
                max: 50,
                text: ['高', '低'],
                realtime: true,
                calculable: true,
                inRange: {
                    color: ['orange', 'green']
                }
            },
            series: [
                {
                    type: 'map',
                    map: 'china',
                    label: {
                        normal: {
                            show: true,
                            color: "white",
                            fontSize: "12"
                        },
                    },
                    emphasis: {
                        label: {
                            show: true
                        }
                    },
                    data:{{ articleCityDicList | tojson }},
​
                    itemStyle: {
                        normal: {
                            areaColor: "skyblue",
                            borderColor: "#fff"
                        },
                        emphasis: {
                            areaColor: "#2B91B7"
                        }
                    },
                    zoom: 1.4,
                    roam: true
                }
            ]
        };
​
        option && myChart.setOption(option);
​
    </script>
相关推荐
赴3351 小时前
逻辑回归算法基础介绍,简单的二分类三分类实例
人工智能·python·机器学习·逻辑回归·sklearn·分类算法
计算机毕设定制辅导-无忧学长2 小时前
InfluxDB 与 Python 框架结合:Django 应用案例(二)
python·django·sqlite
java1234_小锋2 小时前
[免费]基于Python的招聘职位信息推荐系统(猎聘网数据分析与可视化)(Django+requests库)【论文+源码+SQL脚本】
python·数据分析·django·python招聘系统·django招聘
im_AMBER2 小时前
学习日志23 python
python·学习
生信大杂烩2 小时前
基于成像空间转录组技术的肿瘤亚克隆CNV原位推断方法
python·数据分析
金井PRATHAMA2 小时前
分布内侧内嗅皮层的层Ⅱ或层Ⅲ的网格细胞(grid cells)对NLP中的深层语义分析的积极影响和启示
人工智能·深度学习·神经网络·机器学习·自然语言处理·知识图谱
IT项目分享3 小时前
Python字典完全指南:从基础到实战(2025版)
开发语言·python·it项目网
这里有鱼汤3 小时前
全网最通俗易懂的趋势判断神器:卡尔曼滤波原来这么实用!
后端·python·程序员
这里有鱼汤3 小时前
年化96%的小市值策略的选股逻辑源码来了
后端·python
大千AI助手4 小时前
掩码语言模型(MLM)技术解析:理论基础、演进脉络与应用创新
人工智能·神经网络·机器学习·语言模型·自然语言处理·mlm·掩码