mysql 经纬度_MySQL简要分析猫眼电影TOP100榜

cb2852075e0e1af871aa6c3e425f85a5.gif

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

知乎ID:国服帅座

提出问题

对于广大电影爱好者来说,猫眼平台提供了海量电影信息。在其官网上有一个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);

05f611a038a16b365da001c215499766.png

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

2.评分最低的电影

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

20dfc406437bb1389de797758c6023e3.png

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

3.上映时间最早的电影

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

a8a4b3d777115057de83cba19e073751.png

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

4.周星驰主演的电影

SELECT * FROM top100
WHERE actor LIKE '%周星驰%';

97403445315580cc4d14d66a045ad4d7.png

分析:星爷主演的电影共有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部以上的年份

a210571d41ccd2cac283f8d2f764be1d.png

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

SELECT '喜剧片' AS "类型", COUNT(style) AS "数量"
FROM top100
WHERE style LIKE '%喜剧%' 
UNION 
SELECT '恐怖片' AS "类型", COUNT(style) AS "数量"
FROM top100
WHERE style LIKE '%恐怖%';

25df215fcfbed12dc6315c3f0f7571ff.png

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

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

SELECT * FROM top100
WHERE minute > 180;

2ea76ddf7327f5db60ef9c8f435736b8.png

分析:观影时间最长为《乱世佳人》,几乎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()

55b174b212d0e35b08a3e201e17b76ec.gif

往期精彩传送

爬虫三步走——以R语言爬取经纬度为例

Python调用高德地图API爬取经纬度

Python调用百度地图API爬取经纬度

听说过高德版本的天气预报么

Python双Y轴可视化

这是一份【洗浴推拿指南】,敬请查收!

您是否知道,回家的路究竟有多长?

大年初六中午,全国各区县哪里最冷?

Scrapy爬取京东某书评论

Selenium登录高德地图爬取驾驶距离

c26176c83ed50980a4a60d5a6ed7829e.png

好看点一下 大家都知道 d65f3e7466d0e8696a828d4203c59da6.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值