当前位置: 首页 > news >正文

Python_百度贴吧评论情感分析

一、评论爬取

以百度贴吧中“美团骑手吧”为例,对页面中的帖子评论进行爬取,并将结果以json的格式保存到本地中。

from lxml import etree
import requests
import json# 根据网页url获取评论
def GetComments(url):# 使用requests库发送GET请求,获取网页内容,并将响应内容编码设置为utf-8response = requests.get(url)response.encoding = 'utf-8'content = response.text #将响应内容转换为字符串ret = etree.HTML(content) #使用lxml库的HTML方法解析网页内容# 使用XPath表达式提取所有帖子信息lists = ret.xpath('//li[@class=" j_thread_list clearfix thread_item_box"]')#  依次获取每条帖子的评论信息,并存放在my_list列表当中for list in lists:global my_listcomment = str(list.xpath('.//div[@class="threadlist_abs threadlist_abs_onlyline "]/text()')[0].strip())my_list.append(comment)if __name__ == '__main__':base_url = 'https://tieba.baidu.com/f?kw=%E7%BE%8E%E5%9B%A2%E9%AA%91%E6%89%8B&ie=utf-8&pn='my_list = []# 每50条数据为1页,依次获取多个页面的帖子评论for i in range(0,50,50):url = base_url + f'{i}'GetComments(url)# 将获取的帖子评论以json格式进行保存with open('list_file.json', 'w', encoding='utf-8') as file:json.dump(my_list, file, ensure_ascii=False, indent=4)

二、情感分析

根据上述爬取到的评论,利用snowlp工具进行情感分析,将评论分为“积极”“中性”消极“,并根据数量占比进行可视化。

from snownlp import SnowNLP
import matplotlib.pyplot as plt
import json# 定义全局变量comments,用于存储评论数据
global comments# 获取在本地存放的评论数据
with open('list_file.json', 'r', encoding='utf-8') as file:comments = json.load(file)# 利用情感分析函数对每一条评论进行分析,判断其情感色彩
def sentiment_analysis(text):s = SnowNLP(text)if s.sentiments > 0.6:return "积极"elif s.sentiments < 0.4:return "消极"else:return "中性"# 对评论数据进行情感分析
sentiments = [sentiment_analysis(comment) for comment in comments]# 统计各类情感的数量
positive_count = sentiments.count("积极")
negative_count = sentiments.count("消极")
neutral_count = sentiments.count("中性")# 可视化处理
labels = ["积极", "消极", "中性"]
sizes = [positive_count, negative_count, neutral_count]
colors = ["green", "red", "gray"]
explode = (0.1, 0, 0)plt.rcParams['font.sans-serif'] = ['SimHei']  # 设置字体为黑体plt.pie(sizes, explode=explode, labels=labels, colors=colors, autopct="%1.1f%%", shadow=True, startangle=90)
plt.axis("equal")
plt.show()
http://www.lryc.cn/news/296547.html

相关文章:

  • 如何运行心理学知识(心流)来指导工作和生活
  • 精简还是全能?如何在 Full 和 Lite 之间做出最佳选择!关于Configuration注解的Full模式与Lite模式(SpringBoot2)
  • springboot微信小程序uniapp学习计划与日程管理系统
  • 236.二叉树的最近公共祖先
  • ETL是什么,有哪些ETL工具?就业前景如何?
  • 无人机系统组装与调试,多旋翼无人机组装与调试技术详解,无人机飞控系统原理
  • Log360,引入全新安全与风险管理功能,助力企业积极抵御网络威胁
  • 【开源】JAVA+Vue.js实现高校实验室管理系统
  • Flink CDC 与 Kafka 集成:Snapshot 还是 Changelog?Upsert Kafka 还是 Kafka?
  • 极智一周 | 国产CPU系列汇总、鲲鹏、飞腾、平头哥 And so on
  • PgSQL技术内幕 - case when表达式实现机制
  • Android9~Android13 某些容量SD卡被格式化为内部存储时容量显示错误问题的研究与解决方案
  • 音视频色彩:RGB/YUV
  • MySQL之密码策略和用户授权
  • 电脑通电自启动设置
  • hive表加字段
  • 从零构建Hugo主题 - I
  • 【HarmonyOS应用开发】HTTP数据请求(十四)
  • MongoDB聚合: $sortByCount
  • FY-SA-20237·8-AI‘sIQ
  • react将选中文本自动滑动到容器可视区域内
  • Rust语言入门小结(第1篇)
  • 前端实现支付跳转以及回跳
  • 黑豹程序员-封装组件-Vue3 setup方式子组件传值给父组件
  • PySpark(三)RDD持久化、共享变量、Spark内核制度,Spark Shuffle、Spark执行流程
  • PCIE Order Set
  • nginx upstream server主动健康检测模块ngx_http_upstream_check_module 使用和源码分析(下)
  • 基于SSM的网络在线考试系统(有报告)。Javaee项目。ssm项目。
  • 【Flink状态管理(二)各状态初始化入口】状态初始化流程详解与源码剖析
  • python+flask人口普查数据的应用研究及实现django