推广 热搜:     公司  行业  系统  服务  参数  中国  企业  教师 

【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏

   日期:2024-11-04     浏览:57    移动:http://22pru.gawce.com/quote/8173.html

本文首发公众号【老男孩的平凡之路】 我是 ,一枚10年程序猿。

【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏

自从2023.3月以来,"淄博烧烤"现象持续占领热搜流量,体现了后疫情时代众多网友对人间烟火气的美好向往,本现象级事件存在一定的数据分析实践意义。

动态演示:

通过m端的搜索页面,爬取以"淄博烧烤"为关键词的微博id,获取到微博id的目的,是传给评论爬虫。

发送请求部分:

注意,type=60代表"热门",如下:

解析数据部分:

至此,已经获取到以「淄博烧烤」为关键词的微博id列表 id_list_list 了。

从2.1章节获取到微博id列表之后,传入爬取微博评论函数 get_comments

这部分爬虫讲解可移步:

【2023微博评论爬虫】用python爬上千条微博评论,突破15页限制!

最终,爬取到的微博评论数据,示例如下:

说明:无论微博搜索页,还是微博评论页,都可以自定义设置max_page,满足自己的个性化数据量要求。

最核心的三行代码:

用create_engine创建数据库连接,格式为:

create_engine('数据库类型+数据库驱动://用户名:密码@数据库IP地址/数据库名称')

这样,数据库连接就创建好了。

然后,用pandas的read_csv函数读取csv文件。

最后,用pandas的to_sql函数,把数据存入MySQL数据库:

非常方便地完成了反向导入,即:从csv向数据库的导入。

这个部分的讲解视频:

仅用Python三行代码,实现数据库和excel之间的导入导出!

由于pyecharts组件没有专门用作标题的图表,我决定灵活运用Line组件实现大标题。

首先,找到一张星空图作为大屏背景图:

然后,在Line组件中加入js代码,加载背景图:

大标题效果如下:

绘制词云图,需要先进行中文分词。既然分词,就要先设置停用词,避免干扰词影响分析结果。

这里采用哈工大停用词作为停用词词典。

这样,所有停用词就存入stopwords_list这个列表里了。

如果哈工大停用词仍然无法满足需求,再加入一些自定义停用词,extend到这个列表里:

现在就可以愉快的绘制词云图了,部分核心代码:

词云图效果:

先对评论数据进行情感判定,采用snownlp技术进行情感打分及判定结果:

将情感分析结果用pandas保存到一个Excel文件里,如下:

绘制玫瑰图,部分核心代码:

玫瑰图效果:

先根据词云图部分提取出TOP10高频词(过滤掉停用词之后的):

然后带入柱形图,部分核心代码:

柱形图效果:

首先,根据评论时间统计出每天的微博评论数量:

然后,根据统计数据画出折线图,部分核心代码:

折线图效果:

由于IP属地字段都包含"来自"两字,先进行数据清洗,将"来自"去掉:

然后统计各个IP属地的数量,方便后续带入地图可视化:

下面开始绘制地图,部分核心代码:

地图效果,如下:

当然,地图中的颜色,都是自己设置的十六进制颜色,可以根据自己的喜好更改。

最后,也是最关键的一步,把以上所有图表组合到一起,用Page组件,并且选用DraggablePageLayout方法,即拖拽的方式,组合图表:

本代码执行完毕后,打开临时html并排版,排版完点击Save Config,把json文件放到本目录下。

再执行最后一步,调用json配置文件,生成最终大屏文件。

至此,所有代码执行完毕,生成了最终大屏html文件。

分享一个小技巧,我设置了一键更换颜色主题:

只需更换ThemeType参数,即可实现一键更换主题!

更多颜色主题等待小伙伴去发掘!

技术开发流程:

为了方便大家体验可视化动态交互效果,我把此大屏部署到了服务器,请移步:

mgnb.pro:8888

效果演示视频:

本文地址:http://www.gawce.com/quote/8173.html    阁恬下 http://www.gawce.com/ , 查看更多

特别提示:本信息由相关企业自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


相关行业动态
推荐行业动态
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2023001713号