来源 | 志斌的python笔记

头图 | 下载于视觉中国

五月过半,观众对五一档上映电影的评价也逐渐沉淀下来,要说观影体验和口碑,当属张艺谋导演的《悬崖之上》了。《悬崖之上》作为一部谍战主题的电影,引人入胜的剧情加上主演们全员在线的演技,顺理成章地在同时期上映的电影种获得了评分排名第一。

本文通过Python爬取豆瓣上对于《悬崖之上》的短评,然后进行数据可视化分析,看看七万条短评里,网友都聊了些什么。

在之前的文章我们已经对豆瓣短评的数据采集有过详细的介绍,有不懂的小伙伴可以看看这篇文章 我用python分析《你好,李焕英》豆瓣30万+评论,终于找到了它大卖的原因 。这里我们直接展示爬虫核心代码:

for page in range(80):
       params = (
           ('start', str(page * 20)),
           ('limit', '20'),
           ('status', 'P'),
           ('sort', 'new_score'),
           ('comments_only', '1'),
           ('ck', 'qN8_'),
       r = requests.get('https://movie.douban.com/subject/32493124/comments', headers=headers, params=params, cookies=cookies)
       yonghumingchengs = re.findall('<a title="(.*?)href.*?">', r.json()['html'], re.S)
       youyongshus = re.findall('<span class="votes vote-count">(.*?)</span>', r.json()['html'], re.S)
       pinglunshijians = re.findall('<span class="comment-time " title="(.*?)">', r.json()['html'], re.S)
       pingluns = re.findall('<span class="short">(.*?)</span>', r.json()['html'], re.S)
       for i in range(20):
           a = a + 1
           sheet.append([yonghumingchengs[i], youyongshus[i], pinglunshijians[i].split()[0].split("-")[-1],
                         pinglunshijians[i].split()[1].split(":")[0], pingluns[i]])
       print(f"已爬取完第{page}页数据,存入{i + 1}条数据....")
   except:
       wb.save("全部.xlsx")
       print(f"共爬取{page}页数据,存入{a}条数据....")
 

1.合并Excel

因为是分全部、好评、一般、差评四个部分来对影评进行爬取的,所以我们要对这四个影评文件夹进行合并。代码如下:

for i in files:
   wb = openpyxl.load_workbook(i)
   sheet = wb['豆瓣评论']
   for i in range(2,502):
       A_cell = sheet[f'A{i}']
       B_cell = sheet[f'B{i}']
       C_cell = sheet[f'C{i}']
       D_cell = sheet[f'D{i}']
       E_cell = sheet[f'E{i}']
       a = [A_cell.value,int(B_cell.value),int(C_cell.value),int(D_cell.value),E_cell.value]
       sheet_1.append(a)
 

2.导入评论数据

用pandas读取合并后的影评数据并预览。

df = pd.read_excel('总.xlsx',names=['用户名称','点赞数','评论日期','评论时间','评论内容'])
print(df.head())
 

3.删除重复数据

df.drop_duplicates()
 

4.查看数据类型

查看字段类型和缺失值情况,符合分析需要,无需另做处理。

df.info()
 

数据可视化

1.各类评论占比

这部电影的短评数有7w+,好评竟能占到快80%,果然张艺谋导演的剧都是好剧~,建议大家抓住五一的小尾巴,去刷一下这个剧。

2.主演提及次数

这部影片一共有五个主演,没想到男一张译和女一秦海璐竟然不是被提及次数最多的,反而是刘浩存被提及次数最多,那让我们来看看大家在影评中都是怎么评价她的。

从词云图中看出,作为新晋的谋女郎,刘浩存确实实力很强,演技很好,同时影片中的角色也很好,可能是这样才导致它的被提及次数成为第一吧。

3.各类星级占比

从图中,我们可以明显的看出,打4星的观众最多,占了54%,其次是3星和5星,分别占26%和17%。这样看来,观众还是非常肯定这部影片的。

4.评论发表时间分布

从图中,我们可以看出,大部分影评发表时间在晚上和凌晨,白天发表影评的数量很少,影院可以适当增加晚上和凌晨的场次。

  更多精彩推荐  美国燃油“动脉”被黑客切断,网络安全走向哪里?专访山石网科热文 | 卷积神经网络入门案例,轻松实现花朵分类 IBM 能靠 2nm 芯片翻身吗?用 Python 实现隐身,我可以 | 文末福利AI 3D 传感器市场竞争白热化,中国掌握自主可控核心技术时不我待!小心!你家的 IoT 设备可能已成为僵尸网络“肉鸡” 点分享点收藏点点赞点在看 来源 | 志斌的python笔记头图 | 下载于视觉中国五月过半,观众对五一档上映电影的评价也逐渐沉淀下来,要说观影体验和口碑,当属张艺谋导演的《悬崖之上》了。《悬崖之上》作为一部谍战主题...
从这个网址学习的:https://zhuanlan.zhihu.com/p/399300580 ------------------------------------------------------------------------ https://movie.douban.com/subject/25728006/comments点击下一页 https://movie.douban.com/subject/25728006/comments?start=20&limit=20&am.
# 设置请求头信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'} # 获取指定电影的影评信息 def get_comments(movie_url): # 发送请求获取页面内容 response = requests.get(movie_url, headers=headers) content = response.text # 解析页面内容 soup = BeautifulSoup(content, 'html.parser') comments = [] # 获取所有影评内容 for comment in soup.find_all('span', class_='short'): comments.append(comment.string) return comments # 测试,获取《肖申克的救赎》的影评 movie_url = 'https://movie.douban.com/subject/1292052/comments?status=P' comments = get_comments(movie_url) print(comments) 这个示例中,我们使用requests库发送请求获取页面内容,然后使用BeautifulSoup库解析网页内容,获取影评信息。您只需要将`movie_url`变量替换成您需要获取影评的电影链接即可。