热门推荐
【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏
2024-11-04 21:32  浏览:61

本文首发公众号【老男孩的平凡之路】 我是 ,一枚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

效果演示视频:

    以上就是本篇文章【【爬虫+数据清洗+可视化】“淄博烧烤”热评Python舆情分析大屏】的全部内容了,欢迎阅览 ! 文章地址:http://lanlanwork.gawce.com/quote/8173.html 
     行业      资讯      企业新闻      行情      企业黄页      同类资讯      网站地图      返回首页 阁恬下移动站 http://lanlanwork.gawce.com/mobile/ , 查看更多