作者:国服帅座 经济学在读硕士

公众号:统计之家

提出问题

对于广大电影爱好者来说,猫眼平台提供了海量电影信息。在其官网上有一个TOP100榜单,我们使用SQL语句简单分析该榜单电影,试图了解如下这些信息。

评分最高的电影

评分最低的电影

上映时间最早的电影

周星驰主演的电影

按年份统计上映电影数量

分别统计喜剧片和恐怖片的数量

观影时间超过180分钟的电影

获得数据

本文数据由笔者利用selenium爬取,爬虫代码附在文末。

在爬虫前先在MySQL中创建名为“maoyan”的数据库,然后创建名为“top100”的数据表,然后在爬虫时将每条记录导入该表。

表中共有6个字段,100条记录。

title:电影名称

minute:电影时长,单位“分钟”

score:电影在猫眼网站上的评分

stage:电影上映的年代

style:电影所属类型,并不单一

actor:电影主演,基本都是三位演员名字

分析数据

1.评分最高的电影

SELECT * FROM top100

WHERE score = (SELECT MAX(score) FROM top100);

分析:周星驰的《大话西游之月光宝盒》确实能打,全榜最高的9.6分!

2.评分最低的电影

SELECT * FROM top100

WHERE score = (SELECT MIN(score) FROM top100);

分析:榜单最低分为8.8分,共有21部电影。

3.上映时间最早的电影

SELECT * FROM top100

WHERE SUBSTR(stage,1,4) =

(SELECT MIN(SUBSTR(stage,1,4)) FROM top100);

分析:一代女神费雯丽主演的《乱世佳人》,上映年代为1939年。

4.周星驰主演的电影

SELECT * FROM top100

WHERE actor LIKE '%周星驰%';

分析:星爷主演的电影共有4部出现在榜单,满满的青春呀!

5.按年统计上映电影数量

SELECT SUBSTR(stage,1,4) AS year, COUNT(*) AS number

FROM top100

GROUP BY SUBSTR(stage,1,4)

HAVING COUNT(*) > 4

ORDER BY number DESC;

-- 只选取了上映电影达到5部以上的年份

6.分别统计“喜剧片”和“恐怖片”的数量

SELECT '喜剧片' AS "类型", COUNT(style) AS "数量"

FROM top100

WHERE style LIKE '%喜剧%'

UNION

SELECT '恐怖片' AS "类型", COUNT(style) AS "数量"

FROM top100

WHERE style LIKE '%恐怖%';

分析:喜剧片共18部,而恐怖片仅仅1部。

7.观影时间超过180分钟的电影

SELECT * FROM top100

WHERE minute > 180;

分析:观影时间最长为《乱世佳人》,几乎4小时!

爬虫代码

from selenium import webdriver

import time

import re

import pymysql

driver = webdriver.Chrome()

url_list = ["https://maoyan.com/board/4?offset={}".format(i) for i in range(0,91,10)]

conn = pymysql.connect(host='localhost',port=3307,user='root',password='usbw',db='maoyan',charset='utf8')

cursor = conn.cursor() # 提前在MySQL创建数据库maoyan,创建表格top100

for url in url_list:

driver.get(url)

for i in range(1,11):

title = driver.find_element_by_css_selector('#app > div > div > div.main > dl > dd:nth-child('+str(i)+') > div > div > div.movie-item-info > p.name > a').text

actor = driver.find_element_by_css_selector('#app > div > div > div.main > dl > dd:nth-child('+str(i)+') > div > div > div.movie-item-info > p.star').text.lstrip('主演:')

zs = driver.find_element_by_css_selector('#app > div > div > div.main > dl > dd:nth-child('+str(i)+') > div > div > div.movie-item-number.score-num > p > i.integer').text

xs = driver.find_element_by_css_selector('#app > div > div > div.main > dl > dd:nth-child('+str(i)+') > div > div > div.movie-item-number.score-num > p > i.fraction').text

score = zs + xs # 评分的整数和小数部分分别获取后拼接

stage = driver.find_element_by_css_selector('#app > div > div > div.main > dl > dd:nth-child('+str(i)+') > div > div > div.movie-item-info > p.releasetime').text.lstrip('上映时间:')

driver.find_element_by_css_selector('#app > div > div > div.main > dl > dd:nth-child('+str(i)+') > div > div > div.movie-item-info > p.name > a').click()

time.sleep(1)

style = driver.find_element_by_css_selector('body > div.banner > div > div.celeInfo-right.clearfix > div.movie-brief-container > ul > li:nth-child(1)').text

length = driver.find_element_by_css_selector('body > div.banner > div > div.celeInfo-right.clearfix > div.movie-brief-container > ul > li:nth-child(2)').text

m = re.search('(.*)/(.*)', length) # 正则表达式,只要电影时长

minute = m.group(2).rstrip('分钟')

cursor.execute("INSERT INTO top100 VALUES('{0}','{1}','{2}','{3}','{4}','{5}');".format(title,minute,score,stage,style,actor))

conn.commit() # 提交插入至数据库

driver.back() # 返回上级页面

time.sleep(1)

cursor.close()

conn.close()

往期精彩传送

猫眼电影MySQL数据库怎么写_MySQL简要分析猫眼电影TOP100榜相关推荐

  1. 猫眼电影MySQL数据库怎么写_Python3爬取猫眼电影榜并将数据存入MySql

    直接上代码: #coding=utf-8 import re import time import pymysql import requests from requests.exceptions i ...

  2. 猫眼电影MySQL数据库怎么写_猫眼电影和电影天堂数据csv和mysql存储

    字符串常用方法 #去掉左右空格 'hello world'.strip() #'hello world'#按指定字符切割 'hello world'.split(' ') #['hello','wor ...

  3. 猫眼电影MySQL数据库怎么写_猫眼电影面试经验

    面试过程: 1.自我介绍 2.看着我的简历中的项目,让我介绍所做项目的大概情况以及遇到的难点?和自己所做的优化点?然而,我就回答了项目大致情况,并没想到太大的难点和优化点:感觉这类问题是比较难回答的, ...

  4. 猫眼电影MySQL数据库怎么写_猫眼电影 后台开发 面经

    一面(7月20 1h 10 min) 1.对springboot的理解 2.springboot想要开发一个web应用需要做哪些配置 3.输入一个https的网址,整个过程是什么样的?详细讲一下htt ...

  5. mysql top100_MySQL简要分析猫眼电影TOP100榜

    作者:Economicoder 公众号:数据学徒 提出问题 对于广大电影爱好者来说,猫眼平台提供了海量电影信息.在其官网上有一个TOP100榜单,我们使用SQL语句简单分析该榜单电影,试图了解如下这些 ...

  6. mysql大于等于怎么写_MySQL 对于千万级的大表要怎么优化?我写了6000字的深度解读...

    千万级大表如何优化,这是一个很有技术含量的问题,通常我们的直觉思维都会跳转到拆分或者数据分区,在此我想做一些补充和梳理,想和大家做一些这方面的经验总结,也欢迎大家提出建议. 从一开始脑海里开始也是火光 ...

  7. mysql数据库安全模式开启_mysql 数据库安全模式

    手把手教你在CentOS 6.8中安装mysql @(Linux)[centos,mysql,安装] 卸载掉原有mysql 查看该操作系统上是否已经安装了mysql数据库:rpm -qa | grep ...

  8. mysql数据库备份方案_MySQL平台数据库备份方案详细说明

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态.有时,正是MySQL管理员造成破坏.管理员已经知道表已破坏,用 ...

  9. mysql数据库物理备份_MySQL数据库之xtrabackup物理备份(一)

    (1)备份开始时会开启一个后台检测进程,实时检测mysql redo(已提交的事务)的变化,一旦发现redo中有新日志写入,立刻将日志记入后台日志文件xtrabackup_log中, (2)复制Inn ...

最新文章

  1. Linux磁盘管理(实验)
  2. python自动输入支付密码_Python之控制台输入密码的方法
  3. 360导航源码php,114啦网址导航源码仿360网址导航最新版
  4. LA 2402 (枚举) Fishnet
  5. java 管理员命令模式_java中命令模式详解和使用方法
  6. 操作系统,,,也考完了【流坑】
  7. 【小摘抄】关于C++11下 string各类用法(持续更新)
  8. 导入表格只有一行 帆软_万万没想到!把x个表格合合合合成一份,10分钟就搞定...
  9. 信息学奥赛一本通 1086:角谷猜想 | OpenJudge NOI 1.5 21
  10. matlab实现移动通信的技术,移动通信系统OFDM系统仿真与实现(基于MATLAB)
  11. 性能强悍的开源关系数据库PostgreSQL
  12. deep-sort 代码阅读(https://github.com/nwojke/deep_sort)
  13. Js文字特效—文字段逐个变色循环
  14. SAP BASIS ADM100 中文版 Unit 2(1)
  15. in unnamed module of loader ‘app‘
  16. mplayer undefined reference to `av_lzo1x_decode''render_one_glyph'
  17. 代理IP是如何使用的
  18. win7桌面右下角有计算机图标,win7系统电脑任务栏右下角图标空白的解决方法
  19. 扫盲:回囙囜囝回囟因囡団囤囥囦囧囨囩囱囫
  20. 【ECCV2022】OSFormer: One-Stage Camouflaged Instance Segmentation with Transformers

热门文章

  1. 一位医疗 AI 创业者的自述:这个行业到底需要什么样的产品?
  2. 用canvas实现一个简易绘图工具
  3. 在计算机系统中存储容量最大的设备,计算机系统中存储容量最大的部件是().
  4. 信号满格怎么显示无法连接服务器,Win7 32系统网络信号满格却无法连接上网怎么处理...
  5. 在Linux安装Kafka监控系统EFAK
  6. RLC元件上电压,电流关系
  7. pycharm库的下载和常见错误
  8. [记录]Cloudflare之WARP及其他app的DNS测试
  9. python的自省到底有什么用
  10. 小白重装系统教程_练习如何用u盘重装系统教程