Python分析《黄蜂女现身》豆瓣影评分析

最近在学习python爬虫以及数据分析,故想做一个简单的项目来检验一下自己最近的学习状况。在豆瓣上查看正在热映的电影有很多,选择了《黄蜂女现身》这部电影来练手,将豆瓣上对它的影评做一个简单的分析吧!后期还会继续对其他的电影进行分析,下次的分析可能会包括地区等属性,此次只是针对评论进行简单的分析。

1、抓取网页数据

首先是抓取网页数据,打开豆瓣电影,点击最近的热映电影后,点击全部评论,我们则选取改网址作为我们的数据来源地址。

import urllib.request
import re

def movie_comment_Crawler(url):

    headers = {
  "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/" "537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}  # 设置模拟请求头

    req = urllib.request.Request(url, headers=headers)

    response = urllib.request.urlopen(req)

    html_data = response.read().decode("utf-8")

    # 因为评论在span中,所以我就直接使用正则表达式来进行匹配
    pattern = r'<span class="short">(.*?)</span>'

    re_comment = re.compile(pattern, re.S)

    comment_list = re_comment.findall(html_data)

    comments = ''
    # 将comment_list列表转换为字符串字符
    for k in range(len(comment_list)):

        comments = comments + (str(comment_list[k])).strip()

    # 将评论保存到txt文件中
    path = "../豆瓣最新电影评论分析/antman_comments.txt"

    with open(path, "a", encoding="utf-8") as f:

        f.write(comments)

# 设置评论的页数
for i in range(0, 10):

    url = "https://movie.douban.com/subject/26636712/comments?start="+str(i * 20)+"&limit=20&sort=new_score&status=P"

    movie_comment_Crawler(url)

2、数据清洗与分析

import re
import jieba   # 分词包
import pandas as pd
from wordcloud import WordCloud  # 词云包
import matplotlib.pyplot as plt
import numpy as np
from scipy.misc import imread


# 读取comments文件
path = "../豆瓣最新电影评论分析/antman_comments.txt"

with open(path, 'r', encoding='utf-8') as file:

    comments = file.readlines()

    comment = ''.join(comments)

# 使用re正则表达式去除多余的标点符号
pattern = re.compile(r'[\u4e00-\u9fa5]+')

filter_data = pattern.findall(comment)

clean_comment = ''.join(filter_data)

# 结巴分词
segment =jieba.lcut(clean_comment, cut_all=True)

words_df = pd.DataFrame({
  "segment": segment})

# 去除停用词
stopwords = pd.read_excel('stopwords.xlsx', index_col=False, quoting=3, sep="\t",names=["stopword"], encoding="utf-8")

words_df = words_df[~words_df.segment.isin(stopwords.stopword)]

# 词频统计 统计使用 groupby 函数,排序使用 sort 函数。
words_count = words_df.groupby(by=["segment"])["segment"].agg({
  "count": np.size})

words_count = words_count.reset_index().sort_values(by=["count"], ascending=False)


# 词云显示
bg_mask = imread("background.jpg")  # 读入自己想显示图片的背景

wordcloud = WordCloud(font_path="simhei.ttf", background_color="white",max_font_size=100, max_words=200, width=400,mask=bg_mask)  # 指定字体类型、字体大小和字体颜色

# word_frequence 为字典类型,可以直接传入wordcloud.fit_words()
word_frequence = ({x[0]: x[1] for x in words_count.head(500).values})

wordcloud = wordcloud.fit_words(word_frequence)

# 存储显示
plt.figure(figsize=(9, 6))
plt.imsave('antman.jpg', wordcloud)
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

其实图上显示的高频词貌似做的不是很好,毕竟是第一次做的,我还没有真正学习过词云和高频词统计,结巴分词等,都是在网上看别人怎么做的,很多内容都做的不好,望大家批评指正!

全部评论

相关推荐

最近群里有很多同学找我看简历,问问题,主要就是集中在明年三月份的暑期,我暑期还能进大厂嘛?我接下来该怎么做?对于我来说,我对于双非找实习的一个暴论就是title永远大于业务,你在大厂随随便便做点慢SQL治理加个索引,可能就能影响几千人,在小厂你从零到一搭建的系统可能只有几十个人在使用,量级是不一样的。对双非来说,最难的就是约面,怎么才能被大厂约面试?首先这需要一点运气,另外你也需要好的实习带给你的背书。有很多双非的同学在一些外包小厂待了四五个月,这样的产出有什么用呢?工厂的可视化大屏业务很广泛?产出无疑是重要的,但是得当你的实习公司到了一定的档次之后,比如你想走后端,那么中厂后端和大厂测开的选择,你可以选择中厂后端(注意,这里的中厂也得是一些人都知道的,比如哈啰,得物,b站之类,不是说人数超过500就叫中厂),只有这个时候你再去好好关注你的产出,要不就无脑大厂就完了。很多双非同学的误区就在这里,找到一份实习之后,就认为自己达到了阶段性的任务,根本不再投递简历,也不再提升自己,玩了几个月之后,美其名曰沉淀产出,真正的好产出能有多少呢?而实际上双非同学的第一份实习大部分都是工厂外包和政府外包!根本无产出可写😡😡😡!到了最后才发现晚了,所以对双非同学来说,不要放过任何一个从小到中,从中到大的机会,你得先有好的平台与title之后再考虑你的产出!因为那样你才将将能过了HR初筛!我认识一个双非同学,从浪潮到海康,每一段都呆不久,因为他在不断的投递和提升自己,最后去了美团,这才是双非应该做的,而我相信大部分的双非同学,在找到浪潮的那一刻就再也不会看八股,写算法,也不会打开ssob了,这才是你跟别人的差距。
迷茫的大四🐶:我也这样认为,title永远第一,只有名气大,才有人愿意了解你的简历
双非本科求职如何逆袭
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务