豆瓣已玩烂,来爬点有逼格的 ——IMDB 电影提升你的品位

戳蓝字“CSDN云计算”关注我们哦!


640?wx_fmt=gif


作者:翻滚吧羊宝宝

文章转载自数据森麟


640?前言
640?

转战Python半年,接触爬虫2个月,期间读了10本相关书籍,完成此作,算是对过去学习、实践的一次回顾。也希望与更多的python,爬虫爱好者小伙伴们一起交流、成长。


选此题目,一来豆瓣作为爬虫入门,各种大牛的深入分析已趋于完美;另一方面随着中国电影工业的发展,我们需要将视角转向国际市场,通过数据分析,了解一下外国人比较感兴趣的电影。



640?数据爬取640? 


网页分析

IMDB top250主页

 

640?wx_fmt=png


IMDB电影详情页(1)

 

640?wx_fmt=png


IMDB 电影详情页(2)

 

640?wx_fmt=png


基于以上网页构造,我们发现只需得到每个电影的详情页编码(唯一),通过2次“蛙跳”,实现详情页(1)(2)导出国家&类型,分数&人数的信息的获取。便于理解,爬取思维导图如下:


640?wx_fmt=png


爬虫代码

01

IMDB top250主页


#导入库-------------------------------------------
from urllib import request
from chardet import detect
from bs4 import BeautifulSoup
import pandas as pd
import time
import random

#获取网页源码,生成soup对象-------------------------
def getSoup(url):
    with request.urlopen(url) as fp:
       byt = fp.read()
       det = detect(byt)
       time.sleep(random.randrange(1,5))
       return BeautifulSoup(byt.decode(det['encoding']),'lxml')
   
#解析数据-------------------------------------------  
def getData(soup):
   #获取评分
   ol = soup.find('tbody', attrs = {'class''lister-list'})
   score_info = ol.find_all('td',attrs={'class':'imdbRating'})
   film_scores = [k.text.replace('\n',''for k in score_info]
   #获取评分、电影名、导演・演员、上映年份、详情网页链接
   film_info = ol.find_all('td',attrs={'class':'titleColumn'})
   film_names =  [k.find('a').text for k in film_info]
   film_actors =  [k.find('a').attrs['title'for k in film_info]
   film_years = [k.find('span').text[1:5for k in film_info]
   next_nurl =  [url2 + k.find('a').attrs['href'][0:17]  for k in film_info]
   data=pd.DataFrame({'name':film_names,'year':film_years,'score':film_scores,'actors':film_actors,'newurl':next_nurl})      
   return data    



02

IMDB top250电影详情页



#获取详情页数据-------------------------------------------
def nextUrl(detail,detail1):
  #获取电影国家
  detail_list = detail.find('div',attrs={'id':'titleDetails'}).find_all('div',attrs={'class':'txt-block'})
  detail_str = [k.text.replace('\n',''for k in detail_list]
  detail_str = [k for k in detail_str if k.find(':')>=0]
  detail_dict = {k.split(':')[0] : k.split(':')[1for k in detail_str}
  country = detail_dict['Country']    
  #获取电影类型
  detail_list1 = detail.find('div',attrs={'class':'title_wrapper'}).find_all('div',attrs={'class':'subtext'})
  detail_str1 = [k.find('a').text for k in detail_list1]
  movie_type=pd.DataFrame({'Type':detail_str1})
  #获取以组划分的电影详细评分、人数
  div_list = detail1.find_all('td',attrs= {'align''center'}) 
  value = [k.find('div',attrs= {'class''bigcell'}).text.strip() for k in div_list]
  num   = [k.find('div', attrs={'class''smallcell'}).text.strip() for k in div_list]
  scores=pd.DataFrame({'value':value,'num':num})  
  return country,movie_type,scores




数据展示



最终我们得到了如下数据,并将其进行存储用于后续的分析:


640?wx_fmt=png



640?数据分析 640?


01

影片类型对比


首先来看一下各个类型的影片占比:


640?wx_fmt=png


Top250电影的类型占比,前三名分别是喜剧、犯罪与动作。

紧张刺激的情绪、张弛有度的情节,最能带给影迷带来记忆深刻的观影体验。


下面再来看下各个类型的影片的得分对比:


640?wx_fmt=png


从类型来看,西部片一骑绝尘,究其原因可能与受众人群小、爱好者狂野奔的性格易给高分有关。其次,犯罪、动作、冒险、推理、恐怖题材也易出较高评分



02

年份对比



首先我们看下TOP250电影的所属年份:


640?wx_fmt=png


Top250电影中,1957、1995、与2014年电影较多,而1975年后,上榜电影有明显增加的趋势,这可能与电影工业的日趋成熟有关。


至于1995年,熟悉电影的小伙伴可能知道,1995年是世界电影100周年,无数电影天才抱着献礼的想法,在这一年诞生了他们伟大的作品,我们较为熟悉的有《肖申克救赎》、《阿甘正传》、《低俗小说》、《四个婚礼与一个葬礼》、《七宗罪》、《狮子王》等。


同时我们看下各个年份电影的评价分数:


640?wx_fmt=png


比较电影年代评分,并无发现明显上升或下降趋势,可见电影艺术并不会随时间而失去自身价值。对于电影,技术不是第一位的,感情共鸣的因素占更大权重;哪部电影最好看?答案就在我们每个人心中。



03

国家对比



我们看下各个国家的电影在TOP250电影中的占比情况:


640?wx_fmt=png


这个数据比较有趣,有点像诺贝尔奖,美国电影占据半壁江山,其余国家瓜分剩下的蛋糕。排名前几位的分别是英国、法国、日本、德国。而中国,唯一上榜的电影只有一部——《花样年华》。


如果是西方主流价值观的原因,同样作为东方文化代表的邻国日本,却有16部电影上榜,可见西方价值观并不能成为中国电影上榜少的主要原因。虽然近几年中国不乏有《大鱼海棠》、以及刚最新上映的《流浪地球》这样高质量的作品上线,但是在国际市场仍反响平平。我相信电影是有共同语言的,也真的有普世价值观这样的东西。如何打造国际化电影工业,给世界人民讲故事,是中国电影人接下来需要探索的课题。



04

导演对比



我们一起看下那些在TOP250榜单中,最常出现的导演们:


640?wx_fmt=png


电影界的诺贝尔开奖啦,一起来看看有哪些作者上榜。鉴于大家对外国导演名可能不太熟悉,这里做了一个导演-代表作做对照表,值得注意的是,雷德利・斯科特、詹姆斯・卡梅隆、大卫・芬奇分别执导了电影《异形1》《异形2》《异形3》,一部《异形》出3个上榜导演,可见其系列影响力,没看过的小伙伴强烈建议一看,虽然口味可能点重。 



640?wx_fmt=png



05

人群对比



首先我们看下不同人群的评分情况:


640?wx_fmt=png


从性别维度来看,男性比女性给容易给出高分。另一方面,从年龄段侧看,无论男女,未成年人员最易给出高分,随着年龄增加,评分愈加犀(è)利(dú),超过45岁的人群,给出的分数是最低的。是否历经沧海,坚硬的心就越难被打动?又或许见多识广,才能公正客观的评价一部电影?也许可以就此问题研究一下,如《电影节评委年龄层的科学配置方法》。


然而知道了评分情况,我们也需要去了解下各类人群的占比情况:


640?wx_fmt=png


虽然“老叔叔”、”老阿姨”们的评分偏低,但是一部电影的口碑高低不用太担心这类人群。因为数据告诉我们,满足30-44以及18-29这两个年龄段的中青年男性口味,电影口碑肯定差不了。从近些年《战狼》、《红海行动》,这类战争动作片均取得不错的口碑中,对评分机制可略知一二。



06

类型、年龄与评分的关系



首先我们用热力图来看下各个人群对不同类型电影的评分情况:


640?wx_fmt=png


不同年龄群,对电影类型的偏好是不同的。如未成年男性、女性,对推理、西部片表现出浓厚兴趣,而45以上的男性、女性,分别对科幻、黑色电影类型钟爱。


评分的高低也需要结合占比进行综合分析:


640?wx_fmt=png


这次我们将数据粒度细化至各年龄层,结合各年龄段评分,以下我们给出各年龄层在TOP250榜中的推荐电影。


640?电影推荐 640?


未成年男性(<18)


640?wx_fmt=png



18-29岁男性


640?wx_fmt=png



30-44岁男性


640?wx_fmt=png



45+男性


640?wx_fmt=png



未成年女性(<18)


640?wx_fmt=png



18-29岁女性


640?wx_fmt=png



30-44岁女性


640?wx_fmt=png



45+女性


640?wx_fmt=png


以上是根据IMDBtop250数据推荐的电影,如果有不符合的情况,在这里说声抱歉。毕竟美国人民的喜好和中国还是有一定区别的。

 

最后,用《三体》的一首诗作为结尾:


我看到了我的爱恋

我飞到她的身边

我捧出给她的礼物

那是一小块凝固的时间

时间上有美丽的条纹

摸起来像浅海的泥一样柔软

 

她把时间涂满全身

然后拉起我飞向存在的边缘

这是灵态的飞行

我们眼中的星星像幽灵

星星眼中的我们也像幽灵


640?wx_fmt=png


福利

1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg

2、公众号后台回复:白皮书,获取IDC最新数据白皮书整理资料!


推荐阅读:

  • 基于Kubernetes的持续部署方案

  • 云评测 | OpenStack智能运维解决方案 @文末有福利!

  • 为什么程序员下班后只关显示器从不关电脑?

  • Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?

  • 指纹锁就安全了?防火防盗还得防AI

  • 当恐怖组织哈马斯玩起了加密货币, 世界又少了多少伟大的灵魂……

  • 2019年中国IT市场趋势热点

  • 2019年最值得关注的五大微服务发展趋势


640?wx_fmt=png喜欢就点击“好看”吧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524597.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React之回调函数形式的ref

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>2_回调函数形式的ref</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 -->…

IOS – OpenGL ES 调节图像RGB通道 GPUImageRGBFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

云评测 | 开发者最有用的开源云监控工具有哪些呢? 这7款神器总有一款适合你!...

戳蓝字“CSDN云计算”关注我们哦&#xff01;整理 | 刘丹云计算作为IT基础设施的交付和使用模式&#xff0c;通过网络以按需、易扩展的方式获得所需的资源。而云平台聚集了大量软硬件资源&#xff0c;并采用虚拟化技术实现动态按需提供需要服务&#xff0c;值得注意的是&#x…

IOS – OpenGL ES 调节图像不透明度 GPUImageOpacityFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

要闻君说:华云数据“豪气”收购超融合厂商Maxta;VMware有意“携手”微软Azure云;亚马逊获3亿美元云计算合同...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 大家好&#xff01;偶是要闻君。气温回升、春意盎然&#xff0c;充分休息两天后就抓紧学习吧&#xff01;文/要闻君全球第二大市场研究机构MarketsandMarkets日前发布报告称&#x…

IOS – OpenGL ES 调节图像阴影 GPUImageHighlightShadowFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

SDN精华问答 | SDN可以做什么?

进入2019年&#xff0c;基于SDN的解决方案再次成为最热门的话题之一&#xff0c; 从运营商、到OTT再到大的企业都已经开始大谈SDN网络规划和部署&#xff0c;甚至WannaCry蠕虫爆发时有人谈到利用SDN的方法抵御。今天&#xff0c;我们就来看看关于SDN的精华问答吧。1Q: SDN可以做…

React之非受控组件

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>1_非受控组件</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 --> <sc…

IOS – OpenGL ES 调节图像色彩替换 GPUImageFalseColorFilter

目录 一.简介二.效果演示三.源码下载四.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

K8S精华问答 | Kubernetes集群不能正常工作,难道是防火墙问题?

作为是Google开源的容器集群管理系。在Docker技术的基础上&#xff0c;为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能&#xff0c;提高了大规模容器集群管理的便捷性。今天&#xff0c;我们就来看看关于k8s的精华问答吧。1Q: Kubernetes集群不能正…

React之受控组件

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>2_受控组件</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 --> <scri…

小团队的微服务之路

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Dean文章转载自Docker微服务是否适合小团队是个见仁见智的问题。回归现象看本质&#xff0c;随着业务复杂度的提高&#xff0c;单体应用越来越庞大&#xff0c;就好像一个类的代码行越来越多&#xff0c;分而治之&#xff0c…

5G精华问答 | 什么是5G?5G与LTE有什么关系?

从2016年以来&#xff0c;5G热度逐步攀升。作为下一代移动通信网络&#xff0c;如果用一个关键词来形容5G&#xff0c;那就是“快”。5G不仅会极大地改变人们现有的生活和工作方式&#xff0c;提升通信效率&#xff0c;还可以加大很多前沿技术和产品落地的可能性。今天&#xf…

React之不用函数柯里化的实现

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>2_不用函数柯里化的实现</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 --&…

React之引出生命周期

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>2_不用函数柯里化的实现</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 --&…

IOS – OpenGL ES 调节图像色度 GPUImageHueFilter

目录 一.简介二.效果演示三.源码下载二.猜你喜欢 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 基础 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目录 >> OpenGL ES 转场 零基础 OpenGL (ES) 学习路线推荐 : OpenGL (ES) 学习目…

中国开发者真实现状:40 岁不做开发,算法工程师最稀缺!

戳蓝字“CSDN云计算”关注我们哦&#xff01;互联网的 2018 年&#xff0c;注定是不平凡的一年。浩浩荡荡的美国制裁中兴事件唤醒了科技界对芯片产业的重视&#xff0c;倒逼了一系列芯片方面的布局和投资&#xff1b;互联网人口红利不断消耗&#xff0c;推动百度、腾讯、阿里巴…

react之生命周期(旧)组件挂载流程代码+图片

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>2_react生命周期&#xff08;旧&#xff09;</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div>…

React之生命周期-setState

<!DOCTYPE html> <html> <head> <meat charset"UTF-8"> <title>2_react生命周期-setState</title> </head> <body> <!-- 准备好一个容器 --> <div id"test"></div> <!-- 核心库 -…

微服务精华问答 | 在使用微服务架构时,您面临哪些挑战?

戳蓝字“CSDN云计算”关注我们哦&#xff01;过去几年来&#xff0c;“微服务架构”这个术语出现了&#xff0c;它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义&#xff0c;但围绕业务能力&#xff0c;自动化部署&#xff0…