Python爬取影评并进行情感分析和数据可视化

这篇具有很好参考价值的文章主要介绍了Python爬取影评并进行情感分析和数据可视化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python爬取影评并进行情感分析和数据可视化

一、引言

前几天出了《航海王:红发歌姬》等电影,我就立马看了,正好做一个爬取影评,想看看影评的好坏。这就离不开python爬虫和自然语言处理技术了。
这是一个小案例:包含python爬虫、数据预处理、自然语言处理、数据可视化等内容。下面我将详细这个小案例。

二、使用requests+BeautifulSoup进行影评的爬取

1、分析界面元素

我这里使用简单的bs4进行爬取。
找到影评所在的标签位置

<div>的类名为 comment 标签为 <span>类名为 short
Python爬取影评并进行情感分析和数据可视化

2、编写代码

代码如下,在User-Agent中设置自己的请求头信息,并将某个电影url填入。

请求头信息获取:点击网络,再刷新一下页面,点击名称为comments?status=P,点击标头,在请求标头的最下方就能看到user-agent了。

获取影评评论内容的函数

def get_comment_content(comment):
    span = comment.find('span', class_='short')
    return span.get_text()

定义将评论内容保存到csv文件中

def save_to_csv(comments):
    with open('comments.csv', 'a', newline='', encoding='utf-8-sig') as csvfile:
        writer = csv.writer(csvfile)
        for comment in comments:
            content = get_comment_content(comment)
            writer.writerow([content])

主方法中调用上述函数并实现爬取与写入

url = '影评url地址'
#你的请求头信息
headers = {
    'User-Agent': 'Mozilla/5.0xxxxxxxxxxxxxxxxxxxx'}
while url:
    print('正在爬取:', url)
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    comments = soup.find_all('div', class_='comment-item')
    save_to_csv(comments)
    time.sleep(1)

实现页面自动跳转的功能,这里加入了try来观察爬取不到的情况,并在结束时将url置空防止进入死循环。

    try:
        pagination = soup.find('div', class_='center').find('a', class_='next')
        print(pagination)
        if pagination:
            next_page = pagination['href']
            url = '影评url地址' + next_page
            print('跳转到下一页:', url)
            print('找到标签跳转')
        else:
            url = None
            print('无跳转')
    except:
        url = None
        print('没有找到,结束')
print('爬取完成!')

完整代码:

import requests
from bs4 import BeautifulSoup
import csv
import time


def get_comment_content(comment):
    span = comment.find('span', class_='short')
    return span.get_text()

def save_to_csv(comments):
    with open('comments.csv', 'a', newline='', encoding='utf-8-sig') as csvfile:
        writer = csv.writer(csvfile)
        for comment in comments:
            content = get_comment_content(comment)
            writer.writerow([content])

url = '影评url地址'
headers = {
    'User-Agent': 'Mozilla/5.0xxxxxxxxxxxxxxxxxxxx'}
while url:
    print('正在爬取:', url)
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    comments = soup.find_all('div', class_='comment-item')
    save_to_csv(comments)
    time.sleep(1)
    try:
        #页面跳转的点击在div的id为paginator ,class为center中的a标签class为next
        pagination = soup.find('div', class_='center').find('a', class_='next')
        print(pagination)
        if pagination:
            next_page = pagination['href']
            url = '影评url地址' + next_page
            print('跳转到下一页:', url)
            print('找到标签跳转')
        else:
            url = None
            print('无跳转')
    except:
        url = None
        print('没有找到,结束')
print('爬取完成!')

最后将爬取到的评论信息进行保存。

尬住了,敷衍的打斗和过度的特效溢出屏幕的光污染。
这就是歌姬吧?
作为民工漫里最长寿的一部是有道理的,对粉丝来说这是一场蓄谋已久的狂欢,红发香克斯出演剧场电影本就不可多得,两代航海家在梦境内外完成了一种代际的交替也足够让人动容,热血和激情澎湃,贝波打call真的可爱极了。对非粉来说也没有观看难度,剧情对每一个出场的角色都有照顾,乌塔是香克斯的女儿自始至终都不会变,这是一次温柔的家庭和解,也是对银幕内外泛滥的负面情绪的一场救赎,乌塔想要创造一个没有苦难的世界,毫不意外最终是梦境一场,但一次完整的、有起有兴的ADO演唱会也能让人心头一软。
尾田这两年没少看女团吧
日本宅男文化還有救嗎 ファザコン蘿莉被ナルシスト裝帥大叔精神打擊變病嬌女idol 开场就说拯救世界的歌聲這個standard高的 結果一開嗓就想逃出影院 视觉听觉大脑受损本人 可以给你拔高一下说是讲娱乐至死 楚门的世界 然后 没了 这俩词就可以end of story 想煽情煽泪的地方皱眉+汗毛直竖save it plz!!!
ado个人演唱会
买red电影票送uta演唱会门票
缤纷的色彩,华丽的音符,仿佛在电影院听了一场Live演唱会,让人梦回大和歌姬时代,可如此美妙的歌声真的是无罪的吗?当音乐的魔法消失,有罪的歌姬和无辜的小女孩不过是阴谋的一体两面。你是愿意沉迷在甜美的歌声中死去,还是宁愿辛苦努力踏实过每一天?魔法音乐的这个哲思,要怎么回答才能安全地活下去
这是开了一场个人演唱会啊,我觉得这个很适合小朋友看,大人的话闭上眼睛听听音乐还是可以的,剧情几乎是为零。
好漫长又随意的一部剧场版,槽点真的有比隔壁柯南少吗……加各种强行的设定也一定要促成全员乱打的局面就真的跟柯南一定要爆炸很像了。当成精良的周年纪念音乐会来看,给一个三星吧。 对池田秀一的声音都要有阴影了,又是这种被过度神话的装逼人物。另外,中文字幕强行翻译成航海王就很真的很能让人意识到,到底为什么这些不偷不杀不作恶的人要自称“海贼”。每次看乌塔和路飞就“为什么要当海贼”鸡同鸭讲地吵起来时,都很想打断他们,“其实他只是想当巡游世界的夺宝奇兵啦”。

由于一些原因,我们只能爬取220条评论。这里我尝试过在220条之前更换请求头继续爬取,结果还是到220就停了。通过打印第220条下面的网页,也发现网址和网站内元素没有改动。

同样的,将电影更换也是这种情况,但也验证了将url更换为其他电影,我们的代码依旧能正常爬取。

电影《保你平安》影评

看这个电影最大的疑问,如果韩露真的是坐台女,她死后就可以被挖坟墓吗?
关于韩露如果真的是坐台小姐应不应该被挖出来这件事,开篇魏平安和墓地经理吵架已经给了创作者的表态。魏平安质问祁经理:坐台小姐怎么了,埋咱这的人不让有道德瑕疵?别老模糊重点了吧?真不知道是看不懂还是看不见。
之前在muji打工,遇到一个爸爸,一口气买了47支笔,开了发票,问我能不能在发票后面给他写这些笔购买于哪里。他说,他女儿班上同学丢了一支笔,号称家里人从日本买的,国内买不到,刚好他女儿之前在muji买了支一样的,班上同学都说是她偷的,爸爸想给女儿挣个公道!抹黑一个人很简单,一张模糊的图、一条朋友圈、一句话就够了,但是要证明一个人,真的太难了!善良的人,祝你平安!
立意很好,但只是浅浅摸到了边缘。一个女人要足够清白足够高尚才会被允许葬在男友旁边,本身这件事就很荒谬,通篇主角也只是为了帮她澄清谣言而奔走,从未想过女性是否可以挣脱这层枷锁。
腿上的胎记是女孩的软肋,乌有的传言是掘墓的铁铲。裤脚向下一寸遮不住审美的霸凌,棺椁移走一格破不掉信息的茧房。这时代多得是为流量胡说的嘴,因谣言蒙蔽的眼,却鲜有不凉的血和求真的心。冰可乐不凉热血,总抱怨直播间没人送出烟花。前方拦路的白马为不舍的爱牵线,江面盛放的烟花祝侠义的人平安。

三、情感分析

1、数据预处理

我们需要将我们所爬取的文件加一个简单的表头,方便我们接下来的操作

由于我们的文件只有一列数据,所以直接手动添加即可(使用记事本或者Excel)。

若需要批量添加表头,下面是代码.

with open('保你平安.csv', 'r',encoding='utf-8-sig') as f:
    reader = csv.reader(f)
    data = list(reader)

# 修改第一列
data[0][0] = 'comment'
data[1][0] = 'xxxx'

# 将其他数据向下移一个位置
for i in range(len(data)-1, 0, -1):
    data[i], data[i-1][1:] = [data[i-1][0]] + data[i][1:], data[i][1:]

# 写回文件
with open('保你平安.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)

我们选择保你平安做情感分析,因为航海王的评论中有很多是日语的,不方便进行分析。

2、情感分析

添加表头之后,我们使用 jieba对句子进行分词处理,并调用停用词来去除一些干扰词

import pandas as pd
import jieba
from textblob import TextBlob
import matplotlib.pyplot as plt

# 设置文件名
input_file = "保你平安.csv"
stopwords_file = "stopwords.txt"
output_file = "保你平安processed.csv"


# 读取停用词
with open(stopwords_file, 'r', encoding='utf-8') as f:
    stopwords = [line.strip() for line in f.readlines()]

# 定义分词函数
def cut(text):
    words = jieba.cut(text)
    return " ".join([word for word in words if word not in stopwords])

# 读取数据文件
data = pd.read_csv(input_file)

# 分词并写入新列
data['process'] = data['comment'].apply(lambda x: cut(str(x)))

并将处理好的句子写入第二列,表头为process。

使用textblob进行简单的情感分析,将情感分为正向和负向(好评与差评),分析出的结果中华,好评用1表示,差评用-1表示,将分析结果写入第三列sentiment中。

# 情感分析并写入新列
data['sentiment'] = data['process'].apply(lambda x: TextBlob(str(x)).sentiment.polarity)

# 写入新文件
data.to_csv(output_file, index=False)

3、数据可视化

最后我们将结果进行可视化,通过绘制饼图,来观察好评和差评所占的比例。

sentiment_counts = data['sentiment'].value_counts()
labels = ['Positive', 'Negative']
colors = ['#66c2a5', '#fc8d62']
explode = (.1, )
fig, ax = plt.subplots()
wedges, texts, autotexts = ax.pie(sentiment_counts, colors=colors, autopct='%1.1f%%', startangle=90, pctdistance=1.1,textprops=dict(color="b"))
ax.legend(wedges, labels, loc="center left", bbox_to_anchor=(1, 0, 0.5, 1))
ax.axis('equal')
plt.title("Sentiment Distribution")
plt.setp(autotexts, size=10, weight="bold")
plt.show()

如图发现这220条评论中,好评占比接近98%

Python爬取影评并进行情感分析和数据可视化

完整代码:

import pandas as pd
import jieba
from textblob import TextBlob
import matplotlib.pyplot as plt

# 设置文件名
input_file = "保你平安.csv"
stopwords_file = "stopwords.txt"
output_file = "保你平安processed.csv"


# 读取停用词
with open(stopwords_file, 'r', encoding='utf-8') as f:
    stopwords = [line.strip() for line in f.readlines()]

# 定义分词函数
def cut(text):
    words = jieba.cut(text)
    return " ".join([word for word in words if word not in stopwords])

# 读取数据文件
data = pd.read_csv(input_file)

# 分词并写入新列
data['process'] = data['comment'].apply(lambda x: cut(str(x)))

# 情感分析并写入新列
data['sentiment'] = data['process'].apply(lambda x: TextBlob(str(x)).sentiment.polarity)

# 写入新文件
data.to_csv(output_file, index=False)

sentiment_counts = data['sentiment'].value_counts()
labels = ['Positive', 'Negative']
colors = ['#66c2a5', '#fc8d62']
explode = (.1, )
fig, ax = plt.subplots()
wedges, texts, autotexts = ax.pie(sentiment_counts, colors=colors, autopct='%1.1f%%', startangle=90, pctdistance=1.1,textprops=dict(color="b"))
ax.legend(wedges, labels, loc="center left", bbox_to_anchor=(1, 0, 0.5, 1))
ax.axis('equal')
plt.title("Sentiment Distribution")
plt.setp(autotexts, size=10, weight="bold")
plt.show()

Python爬取影评并进行情感分析和数据可视化文章来源地址https://www.toymoban.com/news/detail-481813.html

到了这里,关于Python爬取影评并进行情感分析和数据可视化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据舆情评论数据分析:基于Python微博舆情数据爬虫可视化分析系统(NLP情感分析+爬虫+机器学习)

    基于Python的微博舆情数据爬虫可视化分析系统,结合了NLP情感分析、爬虫技术和机器学习算法。该系统的主要目标是从微博平台上抓取实时数据,对这些数据进行情感分析,并通过可视化方式呈现分析结果,以帮助用户更好地了解舆情动向和情感倾向。系统首先利用爬虫技术

    2024年04月15日
    浏览(42)
  • 【爬虫、数据可视化实战】以“人口”话题为例爬取实时微博数据并进行舆情分析

    近期在weibo上讨论的比较热的话题无非就是“人口”了。TaoTao也看了一些大家发的内容。但是感觉单纯的看文字内容不能很直观的反应出来大家的关切。索性就使用爬虫对数据进行爬取,同时结合着数据可视化的方式让数据自己开口说话。那么接下来就让我们使用技术进行分

    2024年01月23日
    浏览(53)
  • python毕设选题 - 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年01月20日
    浏览(61)
  • python毕设选题 - 大数据上海租房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年02月19日
    浏览(56)
  • 用Python爬取电影数据并可视化分析

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 目录 一、获取数据 1.技术工具 2.爬取目标 3.字段信息 二、数据预处理 1.加载数据 2.异常值

    2024年02月06日
    浏览(65)
  • python爬取天气数据并做可视化分析

    历史天气数据schema { ‘当日信息’:\\\'2023-01-01 星期日\\\', \\\'最高气温\\\': 8℃\\\'\\\', \\\'最低气温\\\': \\\'5℃\\\', ‘天气’: \\\'多云\\\', \\\'风向信息\\\':\\\'北风 3级\\\' } 1.导入库 2.对程序进行伪装 3.抓取天气数据 在数据存储前,对数据进行处理,便于后期的数据分析。将上面的“当天信息”字段拆分为“日期”

    2024年02月04日
    浏览(41)
  • 计算机毕设 大数据上海租房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年02月07日
    浏览(43)
  • 计算机毕设 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年02月04日
    浏览(42)
  • 大数据毕设分享 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年01月23日
    浏览(52)
  • Python基于大数据的微博的舆情分析,微博评论情感分析可视化系统(V2.0),附源码,数据库

    博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w+、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏推荐订阅👇🏻 不然下次找不到哟 2022-2024年最全的计算机软件毕业设计选

    2024年03月16日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包