本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理。

以下文章来源于Python爬虫数据分析挖掘 ,作者李运辰

Python爬虫、数据分析、网站开发等案例教程视频免费在线观看

https://space.bilibili.com/523606542

前言

今年给大家爬取『大年初一』上映的几部热门数据(评分时长类型)以及相关网友评论等数据

对评分、时长、类型进行图表可视化

采用不同词云图案对七部电影『评论』词云秀!!!!

数据获取

1.评分数据

网页分析

查看网页源代码,可以见到目标数据在标签<ul class="lists">,通过xpath解析就可以获取。下面直接上代码!

编程实现

headers = {'Host':'movie.douban.com','user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36','cookie':'bid=uVCOdCZRTrM; douban-fav-remind=1; __utmz=30149280.1603808051.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __gads=ID=7ca757265e2366c5-22ded2176ac40059:T=1603808052:RT=1603808052:S=ALNI_MYZsGZJ8XXb1oU4zxzpMzGdK61LFA; dbcl2="165593539:LvLaPIrgug0"; push_doumail_num=0; push_noty_num=0; __utmv=30149280.16559; ll="118288"; __yadk_uid=DnUc7ftXIqYlQ8RY6pYmLuNPqYp5SFzc; _vwo_uuid_v2=D7ED984782737D7813CC0049180E68C43|1b36a9232bbbe34ac958167d5bdb9a27; ct=y; ck=ZbYm; __utmc=30149280; __utmc=223695111; __utma=30149280.1867171825.1603588354.1613363321.1613372112.11; __utmt=1; __utmb=30149280.2.10.1613372112; ap_v=0,6.0; _pk_ref.100001.4cf6=%5B%22%22%2C%22%22%2C1613372123%2C%22https%3A%2F%2Fwww.douban.com%2Fmisc%2Fsorry%3Foriginal-url%3Dhttps%253A%252F%252Fmovie.douban.com%252Fsubject%252F34841067%252F%253Ffrom%253Dplaying_poster%22%5D; _pk_ses.100001.4cf6=*; __utma=223695111.788421403.1612839506.1613363340.1613372123.9; __utmb=223695111.0.10.1613372123; __utmz=223695111.1613372123.9.4.utmcsr=douban.com|utmccn=(referral)|utmcmd=referral|utmcct=/misc/sorry; _pk_id.100001.4cf6=e2e8bde436a03ad7.1612839506.9.1613372127.1613363387.',}url="https://movie.douban.com/cinema/nowplaying/zhanjiang/"
r = requests.get(url,headers=headers)
r.encoding = 'utf8'
s = (r.content)
selector = etree.HTML(s)
li_list = selector.xpath('//*[@id="nowplaying"]/div[2]/ul/li')dict = {}
for item in li_list:name = item.xpath('.//*[@class="stitle"]/a/@title')[0].replace(" ","").replace("\n","")rate = item.xpath('.//*[@class="subject-rate"]/text()')[0].replace(" ", "").replace("\n", "")dict[name] = float(rate)print("电影="+name)print("评分="+rate)print("-------")

电影名评分数据已经爬取下来,并且降序排序,后面会进行可视化。

2.时长和电影类型

网页分析

在页面源码中,电影时长的网页标签是roperty="v:runtime",电影类型的网页标签对应是property="v:genre"

编程实现

###时长
def getmovietime():url = "https://movie.douban.com/cinema/nowplaying/zhanjiang/"r = requests.get(url, headers=headers)r.encoding = 'utf8's = (r.content)selector = etree.HTML(s)li_list = selector.xpath('//*[@id="nowplaying"]/div[2]/ul/li')for item in li_list:title = item.xpath('.//*[@class="stitle"]/a/@title')[0].replace(" ", "").replace("\n", "")href = item.xpath('.//*[@class="stitle"]/a/@href')[0].replace(" ", "").replace("\n", "")r = requests.get(href, headers=headers)r.encoding = 'utf8's = (r.content)selector = etree.HTML(s)times = selector.xpath('//*[@property="v:runtime"]/text()')type = selector.xpath('//*[@property="v:genre"]/text()')print(title)print(times)print(type)print("-------")

3.评论数据

网页分析

查看网页代码,评论数据的目标标签是<div class="mod-bd" id="comments">

(不知道如何分析,可以看上一篇文章python爬取44130条用户观影数据,分析挖掘用户与电影之间的隐藏信息!,这篇文章也是分析豆瓣电影,里面有详细介绍)。

下面开始爬取这七部电影的评论数据!!!!

编程实现

###评论数据
def getmoviecomment():url = "https://movie.douban.com/cinema/nowplaying/zhanjiang/"r = requests.get(url, headers=headers)r.encoding = 'utf8's = (r.content)selector = etree.HTML(s)li_list = selector.xpath('//*[@id="nowplaying"]/div[2]/ul/li')for item in li_list:title = item.xpath('.//*[@class="stitle"]/a/@title')[0].replace(" ", "").replace("\n", "")href = item.xpath('.//*[@class="stitle"]/a/@href')[0].replace(" ", "").replace("\n", "").replace("/?from=playing_poster", "")print("电影=" + title)print("链接=" + href)###with open(title+".txt","a+",encoding='utf-8') as f:for k in range(0,200,20):url = href+"/comments?start="+str(k)+"&limit=20&status=P&sort=new_score"r = requests.get(url, headers=headers)r.encoding = 'utf8's = (r.content)selector = etree.HTML(s)li_list = selector.xpath('//*[@class="comment-item "]')for items in  li_list:text = items.xpath('.//*[@class="short"]/text()')[0]f.write(str(text)+"\n")print("-------")time.sleep(4)

将这些评论数据分别保存到文本文件中,后面将这些评论数据采用不同的图形进行可视化展示!!!!

数据可视化

1.评分数据可视化

###画图
font_size = 10  # 字体大小
fig_size = (13, 10)  # 图表大小data = ([datas])# 更新字体大小
mpl.rcParams['font.size'] = font_size
# 更新图表大小
mpl.rcParams['figure.figsize'] = fig_size
# 设置柱形图宽度
bar_width = 0.35index = np.arange(len(data[0]))
# 绘制评分
rects1 = plt.bar(index, data[0], bar_width, color='#0072BC')# X轴标题
plt.xticks(index + bar_width, itemNames)
# Y轴范围
plt.ylim(ymax=10, ymin=0)
# 图表标题
plt.title(u'豆瓣评分')
# 图例显示在图表下方
plt.legend(loc='upper center', bbox_to_anchor=(0.5, -0.03), fancybox=True, ncol=5)# 添加数据标签
def add_labels(rects):for rect in rects:height = rect.get_height()plt.text(rect.get_x() + rect.get_width() / 2, height, height, ha='center', va='bottom')# 柱形图边缘用白色填充,纯粹为了美观rect.set_edgecolor('white')add_labels(rects1)# 图表输出到本地
plt.savefig('豆瓣评分.png')

在热映的这七部电影中,《你好,李焕英》评分最高(8.3),《唐人街探案3》最低(5.8),这有点出乎意料(唐人街探案3热度远比你好,李焕英热度要高)。

2.时长和类型可视化

时长数据可视化

#####时长可视化
itemNames.reverse()
datas.reverse()# 绘图。
fig, ax = plt.subplots()
b = ax.barh(range(len(itemNames)), datas, color='#6699CC')# 为横向水平的柱图右侧添加数据标签。
for rect in b:w = rect.get_width()ax.text(w, rect.get_y() + rect.get_height() / 2, '%d' %int(w), ha='left', va='center')# 设置Y轴纵坐标上的刻度线标签。
ax.set_yticks(range(len(itemNames)))
ax.set_yticklabels(itemNames)
plt.title('电影时长(分钟)', loc='center', fontsize='15',fontweight='bold', color='red')#plt.show()
plt.savefig("电影时长(分钟)")

图中的电影时长均在120分钟左右

最长的电影《唐人街探案3》(136分钟),时长最短的是《熊出没·狂野大陆》(99分钟)

电影类型数据可视化

#####2.类型可视化
###从小到大排序
dict = sorted(dict.items(), key=lambda kv: (kv[1], kv[0]))
print(dict)itemNames = []
datas = []
for i in range(len(dict) - 1, -1, -1):itemNames.append(dict[i][0])datas.append(dict[i][1])x = range(len(itemNames))
plt.plot(x, datas, marker='o', mec='r', mfc='w', label=u'电影类型')
plt.legend()  # 让图例生效
plt.xticks(x, itemNames, rotation=45)
plt.margins(0)
plt.subplots_adjust(bottom=0.15)
plt.xlabel(u"类型")  # X轴标签
plt.ylabel("数量")  # Y轴标签
plt.title("电影类型统计")  # 标题
plt.savefig("电影类型统计.png")

将这七部电影的类型进行统计(有的电影属于多个类型,比如'动作''奇幻''冒险')。七部电影中其中有四部是属于喜剧。科幻、犯罪、悬疑、冒险均属于其中一部。

3.评论数据词云可视化

使用七种不同的图案进行词云可视化,因此将绘图的代码封装成函数!!!

####词云代码
def jieba_cloud(file_name, icon):with open(file_name, 'r', encoding='utf8') as f:text = f.read()text = text.replace('\n',"").replace("\u3000","").replace(",","").replace("。","")word_list = jieba.cut(text)result = " ".join(word_list)  # 分词用 隔开# 制作中文云词icon_name = ""if icon == "1":icon_name ='fas fa-envira'elif icon == "2":icon_name = 'fas fa-dragon'elif icon == "3":icon_name = 'fas fa-dog'elif icon == "4":icon_name = 'fas fa-cat'elif icon == "5":icon_name = 'fas fa-dove'elif icon == "6":icon_name = 'fab fa-qq'elif icon == "7":icon_name = 'fas fa-cannabis'"""# icon_name='',#国旗# icon_name='fas fa-dragon',#翼龙icon_name='fas fa-dog',#狗# icon_name='fas fa-cat',#猫# icon_name='fas fa-dove',#鸽子# icon_name='fab fa-qq',#qq"""picp = file_name.split('.')[0] + '.png'if icon_name is not None and len(icon_name) > 0:gen_stylecloud(text=result, icon_name=icon_name, font_path='simsun.ttc', output_name=picp)  # 必须加中文字体,否则格式错误else:gen_stylecloud(text=result, font_path='simsun.ttc', output_name=picp)  # 必须加中文字体,否则格式错误return picp

开始对这七部电影评论数据进行绘图

###评论数据词云
def commentanalysis():lists = ['刺杀小说家','你好,李焕英','人潮汹涌','侍神令','唐人街探案3','新神榜:哪吒重生','熊出没·狂野大陆']for i in range(0,len(lists)):title =lists[i]+".txt"jieba_cloud(title , (i+1))

废话不多说了,下面开始『词云秀』!!!!!!!

1.刺杀小说家

2.人潮汹涌

3.熊出没·狂野大陆

4.新神榜:哪吒重生

5.唐人街探案3

6.你好,李焕英

7.侍神令

Python分析春节档七部电影的口碑和票房数据,并可视化显示相关推荐

  1. 2021春节档7部电影数据分析报告

    2021春节档7部电影数据分析报告

  2. 数据解读2019春节档哪部电影最值得看?

    作者:徐麟,目前就职于互联网公司数据部,哥大统计数据狗,从事数据挖掘&分析工作,喜欢用R&Python玩一些不一样的数据. 来源 | 数据森麟(ID:shujusenlin),知乎同名 ...

  3. 使用Python获取春节档电影影评,制作可视化词云图

    Python获取春节档电影影评,制作可视化词云图 前言 准备工作 采集数据部分 基本思路流程 代码实战 可视化词云图 代码展示 效果展示 前言 春节电影听巳月说都还可以,我不信,我觉得还是要看看看过的 ...

  4. 国家版权局:多部门联合打击春节档院线电影盗版传播

    2019年春节期间,国内院线上映的8部国产电影丰富人民群众精神文化生活,受到广泛欢迎,创下春节档院线电影票房新纪录,但电影的盗版传播问题也引起社会关注.为维护清朗的网络版权秩序,促进电影产业健康繁荣发 ...

  5. 分析1.6万部电影,找出了华语电影烂片王

    文章讲的是分析1.6万部电影,找出了华语电影烂片王,某天,工作量不饱和(嘘),就在公司上网随便搜了部电影来看,本来还期待着看完能够为搬砖提供灵感,然鹅--事实证明,我想多了. 在把进度条拖了 11 次 ...

  6. 基于猫眼票房数据的可视化分析

    图片来源于网络,文/AJ-Gordon 案例背景:由于最近<哪吒之魔童降世>的火爆,最新票房已经超过49亿,使我对国内票房的整体走势有了很大兴趣,究竟49亿的票房数据,在国内是处于一个什么 ...

  7. 灯塔上线网络电影日分账票房数据,网络电影进入票房日更时代

    昨日,优酷首次向灯塔专业版公布网络电影日票房数据,使灯塔进一步深耕影视精细化数据的同时,也标志着网络电影正式进入票房日更时代. 目前在灯塔专业版上,用户不仅可以查看优酷网络电影日分账票房,还能够查询到 ...

  8. python分析政策实施前后_用Python分析春节前后的中国A股市场行情(附源代码)

    最近中国股市也因受到海外市场波动的影响的振幅非常大,又由于马上面临春节了,股市里的钱是取出来放到货币基金里好呢,还是继续放在股市里好呢? 除了对于宏观,行业,个股的分析和把握,我们从历史市场表现的角度 ...

  9. 用Python爬取了上万部电影的排名,周末周末好带女神一起去

    文章目录 一.写在前面 二.准备工作 1.使用的软件 2.使用的模块 3.爬虫思路 1. 明确需求 2. 发送请求 (开发者工具里面headers) 3. 获取数据 4. 解析数据 5. 保存数据 三 ...

最新文章

  1. 添加百度地图最简单的办法
  2. python 装饰器简单笔记(附 *args **kw)
  3. C++ Primer ----- 关于初始化
  4. 华中科技大学文华学院 CSDN 高校俱乐部成立啦!
  5. 考研 | 先预览一下考研真题是考研小白最快的入门方法(含21考研最新真题)
  6. Linux-存储服务之NFS
  7. DataGrip快捷键(执行SQL、格式化SQL)
  8. python批量下载文件只有1kb_(尚有报错、待完善)从一些网站(网易公开课、电影网站)上批量获得相关视频文件的下载地址,并保存在一个x.txt文件中...
  9. 5G网络架构、网络接口及协议栈
  10. 团队分享心得体会_团队合作心得体会总结
  11. 2020爬取美赛数学成绩
  12. 通过笔记本wifi共享到以太网接口方法--使用嵌入式设备接入互联网
  13. 豆瓣电影Top250信息爬取并保存到excel文件中!
  14. 2022年docker面试题大全(持续更新中)
  15. 逆置单链表——递归与非递归
  16. Python大作业之就诊卡管理信息系统[原创]
  17. 隐马尔科夫模型 Viterbi算法 Python实现
  18. arduino 网页服务器,如何将Arduino开发板用作Web服务器
  19. matlab 线性调频,线性调频(LFM)仿真
  20. [Unity3D经验分享]批处理工具 (提前下班神器)

热门文章

  1. SPO,关系抽取/实体关系抽取
  2. Android ConstraintLayout
  3. 九宫格游戏-第14届蓝桥杯省赛Scratch初级组真题第5题
  4. 如何解决Mac盖上屏幕后外接屏幕持续黑屏的问题
  5. matlab求向量空间的基,线性空间维数与基的求法.doc
  6. location 的使用
  7. gperftools安装和使用
  8. oracle模糊查询中的regexp_like嵌套子查询用法
  9. MOCTF-Web-美味的饼干
  10. 秒学swif入门手册