豆瓣已玩烂,来爬点有逼格的 ——IMDB 电影提升你的品位
戳蓝字“CSDN云计算”关注我们哦!
作者:翻滚吧羊宝宝
文章转载自数据森麟
前言
转战Python半年,接触爬虫2个月,期间读了10本相关书籍,完成此作,算是对过去学习、实践的一次回顾。也希望与更多的python,爬虫爱好者小伙伴们一起交流、成长。
选此题目,一来豆瓣作为爬虫入门,各种大牛的深入分析已趋于完美;另一方面随着中国电影工业的发展,我们需要将视角转向国际市场,通过数据分析,了解一下外国人比较感兴趣的电影。
数据爬取
网页分析
・IMDB top250主页
・IMDB电影详情页(1)
・IMDB 电影详情页(2)
基于以上网页构造,我们发现只需得到每个电影的详情页编码(唯一),通过2次“蛙跳”,实现详情页(1)(2)导出国家&类型,分数&人数的信息的获取。便于理解,爬取思维导图如下:
爬虫代码
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:5] for 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(':')[1] for 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
数据展示
最终我们得到了如下数据,并将其进行存储用于后续的分析:
数据分析
01
影片类型对比
首先来看一下各个类型的影片占比:
Top250电影的类型占比,前三名分别是喜剧、犯罪与动作。
紧张刺激的情绪、张弛有度的情节,最能带给影迷带来记忆深刻的观影体验。
下面再来看下各个类型的影片的得分对比:
从类型来看,西部片一骑绝尘,究其原因可能与受众人群小、爱好者狂野奔的性格易给高分有关。其次,犯罪、动作、冒险、推理、恐怖题材也易出较高评分
02
年份对比
首先我们看下TOP250电影的所属年份:
Top250电影中,1957、1995、与2014年电影较多,而1975年后,上榜电影有明显增加的趋势,这可能与电影工业的日趋成熟有关。
至于1995年,熟悉电影的小伙伴可能知道,1995年是世界电影100周年,无数电影天才抱着献礼的想法,在这一年诞生了他们伟大的作品,我们较为熟悉的有《肖申克救赎》、《阿甘正传》、《低俗小说》、《四个婚礼与一个葬礼》、《七宗罪》、《狮子王》等。
同时我们看下各个年份电影的评价分数:
比较电影年代评分,并无发现明显上升或下降趋势,可见电影艺术并不会随时间而失去自身价值。对于电影,技术不是第一位的,感情共鸣的因素占更大权重;哪部电影最好看?答案就在我们每个人心中。
03
国家对比
我们看下各个国家的电影在TOP250电影中的占比情况:
这个数据比较有趣,有点像诺贝尔奖,美国电影占据半壁江山,其余国家瓜分剩下的蛋糕。排名前几位的分别是英国、法国、日本、德国。而中国,唯一上榜的电影只有一部——《花样年华》。
如果是西方主流价值观的原因,同样作为东方文化代表的邻国日本,却有16部电影上榜,可见西方价值观并不能成为中国电影上榜少的主要原因。虽然近几年中国不乏有《大鱼海棠》、以及刚最新上映的《流浪地球》这样高质量的作品上线,但是在国际市场仍反响平平。我相信电影是有共同语言的,也真的有普世价值观这样的东西。如何打造国际化电影工业,给世界人民讲故事,是中国电影人接下来需要探索的课题。
04
导演对比
我们一起看下那些在TOP250榜单中,最常出现的导演们:
电影界的诺贝尔开奖啦,一起来看看有哪些作者上榜。鉴于大家对外国导演名可能不太熟悉,这里做了一个导演-代表作做对照表,值得注意的是,雷德利・斯科特、詹姆斯・卡梅隆、大卫・芬奇分别执导了电影《异形1》《异形2》《异形3》,一部《异形》出3个上榜导演,可见其系列影响力,没看过的小伙伴强烈建议一看,虽然口味可能点重。
05
人群对比
首先我们看下不同人群的评分情况:
从性别维度来看,男性比女性给容易给出高分。另一方面,从年龄段侧看,无论男女,未成年人员最易给出高分,随着年龄增加,评分愈加犀(è)利(dú),超过45岁的人群,给出的分数是最低的。是否历经沧海,坚硬的心就越难被打动?又或许见多识广,才能公正客观的评价一部电影?也许可以就此问题研究一下,如《电影节评委年龄层的科学配置方法》。
然而知道了评分情况,我们也需要去了解下各类人群的占比情况:
虽然“老叔叔”、”老阿姨”们的评分偏低,但是一部电影的口碑高低不用太担心这类人群。因为数据告诉我们,满足30-44以及18-29这两个年龄段的中青年男性口味,电影口碑肯定差不了。从近些年《战狼》、《红海行动》,这类战争动作片均取得不错的口碑中,对评分机制可略知一二。
06
类型、年龄与评分的关系
首先我们用热力图来看下各个人群对不同类型电影的评分情况:
不同年龄群,对电影类型的偏好是不同的。如未成年男性、女性,对推理、西部片表现出浓厚兴趣,而45以上的男性、女性,分别对科幻、黑色电影类型钟爱。
评分的高低也需要结合占比进行综合分析:
这次我们将数据粒度细化至各年龄层,结合各年龄段评分,以下我们给出各年龄层在TOP250榜中的推荐电影。
电影推荐
未成年男性(<18)
18-29岁男性
30-44岁男性
45+男性
未成年女性(<18)
18-29岁女性
30-44岁女性
45+女性
以上是根据IMDBtop250数据推荐的电影,如果有不符合的情况,在这里说声抱歉。毕竟美国人民的喜好和中国还是有一定区别的。
最后,用《三体》的一首诗作为结尾:
我看到了我的爱恋
我飞到她的身边
我捧出给她的礼物
那是一小块凝固的时间
时间上有美丽的条纹
摸起来像浅海的泥一样柔软
她把时间涂满全身
然后拉起我飞向存在的边缘
这是灵态的飞行
我们眼中的星星像幽灵
星星眼中的我们也像幽灵
福利
1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!
2、公众号后台回复:白皮书,获取IDC最新数据白皮书整理资料!
推荐阅读:
基于Kubernetes的持续部署方案
云评测 | OpenStack智能运维解决方案 @文末有福利!
为什么程序员下班后只关显示器从不关电脑?
Python 爬虫分析豆瓣 TOP250 告诉你程序员业余该看什么书?
指纹锁就安全了?防火防盗还得防AI
当恐怖组织哈马斯玩起了加密货币, 世界又少了多少伟大的灵魂……
2019年中国IT市场趋势热点
2019年最值得关注的五大微服务发展趋势
喜欢就点击“好看”吧
豆瓣已玩烂,来爬点有逼格的 ——IMDB 电影提升你的品位相关推荐
- 豆瓣已玩烂,来爬点有逼格的——IMDB电影提升你的品位
作者 | 翻滚吧羊宝宝 来源 | 数据森麟(ID:shujusenlin) 前沿 转战Python半年,接触爬虫2个月,期间读了10本相关书籍,完成此作,算是对过去学习.实践的一次回顾.也希望与更多的 ...
- Python来爬点有逼格的 ——IMDB 电影提升你的品位
前言 转战Python半年,接触爬虫2个月,期间读了10本相关书籍,完成此作,算是对过去学习.实践的一次回顾.也希望与更多的python,爬虫爱好者小伙伴们一起交流.成长. 选此题目,一来豆瓣作为爬虫 ...
- 豆瓣新书速递数据爬取与简单数据处理 | 豆瓣爬虫 python pandas
豆瓣新书速递数据爬取与简单数据处理 概要 数据爬取 爬取豆瓣平台提供的数据,存储到本地 json 文件. 数据说明 URL 豆瓣新书速推 HTML https://book.douban.com/la ...
- Java网络爬虫--一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库
一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 目录 一步步使用Java网络爬虫技术实现豆瓣读书Top250数据的爬取,并插入数据库 第一步:创建项目,搭建项目结构 p ...
- python爬猫眼电影影评,Python系列爬虫之爬取并简单分析猫眼电影影评
前言 今天给大家介绍利用Python爬取并简单分析猫眼电影影评.让我们愉快地开始吧~ 开发工具 Python版本:3.6.4 相关模块: requests模块: pyecharts模块: jieba模 ...
- 爬取某视频网站的电影
通过抓包爬取某视频网站的电影 burpsuite工具 1. 先使用抓包工具进行抓包分析,得到对应的接口 2. 直接用requests库来请求响应数据 3. 存入数据库 代码 from functool ...
- python找电影资源_Python爬虫爬取BT之家找电影资源
head.jpg 一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越 ...
- beautifulsoup爬取网页中的表格_Python爬虫爬取BT之家找电影资源
一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在 ...
- Python爬虫爬取BT之家找电影资源
一.写在前面 圣城家园(SCG)倒了BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在这些主流视频网站上 ...
- python爬电影资源_Python爬虫爬取BT之家找电影资源
一.写在前面 最近看新闻说圣城家园(SCG)倒了,之前BT天堂倒了,暴风影音也不行了,可以说看个电影越来越费力,国内大厂如企鹅和爱奇艺最近也出现一些幺蛾子,虽然目前版权意识虽然越来越强,但是很多资源在 ...
最新文章
- Deep learning:三十六(关于构建深度卷积SAE网络的一点困惑)
- 丘成桐:中国人可以做世界一流学者
- linux ndk编译静态库,Android开发教程:NDK编译静态库失败
- Docker-创建一个mysql容器,并保存为本地镜像
- Java sdk及tomcat安装设置
- Java进阶 | 从整体上观察面向对象
- Sql Server系列:数据表操作
- No package ‘mate-desktop-2.0‘ found
- office visio 替代_5款替代微软Visio的开源免费软件
- 图形学基础--深入浅出的微积分书籍 《普林斯顿微积分读本》和《托马斯微积分》
- html5个人博客毕业论文,基于HTML的个人博客网页设计.docx
- Ant-deign-vue入门:布局-官方文档踩坑
- 老工程师10年c语言总结,一位老电子工程师十年感悟:环顾四周,也没见几个有出息的!...
- Fiddler抓包流程
- 沐阳从0到1零基础学习安卓逆向
- Foundation框架 之 常见结构体、包装数据、日期
- 蓝牙RFCOMM协议
- C#从文件读取 Stream
- python 修改excel 路径_python更改已存在excel文件的方法
- Krpano(虚拟漫游)