600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python爬虫实战 pyecharts模块 Python实现奥斯卡金像奖数据可视化

Python爬虫实战 pyecharts模块 Python实现奥斯卡金像奖数据可视化

时间:2021-03-27 10:40:59

相关推荐

Python爬虫实战 pyecharts模块 Python实现奥斯卡金像奖数据可视化

前言

利用Python实现奥斯卡金像奖数据可视化。废话不多说。

让我们愉快地开始吧~

开发工具

Python版本:3.6.4

相关模块:

requests模块

pandas模块

pyecharts模块;

以及一些Python自带的模块。

环境搭建

安装Python并添加到环境变量,pip安装需要的相关模块即可。

分析网页

奥斯卡的相关数据获取,来源于Mtime时光网。

网站没反爬,所以可以轻松获取到数据。

这里以最佳男主角为例,获取时间、获奖者及提名者。

通过一个循环,将最佳男主角、男配角、女主角、女配角信息拿到手。

获取数据

时间、获奖者及提名者信息获取代码如下。

import timeimport requestsfrom bs4 import BeautifulSoupfilenames = ['Best_Actor_LR.csv', 'Best_Actress_LR.csv', 'Best_Actor_SR.csv', 'Best_Actress_SR.csv']def get_message(num1, num2):"""获取数据"""time.sleep(5)years, wins, nominations = [[], [], []]# 请求网址url = '/3/award/3' + str(num1) + '/index' + str(num2) + '.html'headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}response = requests.get(url=url, headers=headers)html = response.text# 对请求结果进行编码解码处理,避免出现乱码html = html.encode('ISO-8859-1')html = html.decode('utf-8')# 提取信息soup = BeautifulSoup(html, 'html.parser')div = soup.find_all(class_='event_awards event_list')# 获取时间信息for dt in div[0].find_all('dt'):if len(dt) == 1:year = dt.get_text().replace('\n', '').strip()years.append(year)# 获取获奖者信息for dd in soup.find_all(class_='yellowbox'):win = dd.find(class_='px14 c_a5').find('a').get_text().split(' ')[0]wins.append(win)# 获取提名者信息for dd in soup.find_all(class_='bluebox'):names = []for k in dd.find_all(class_='px14 c_a5'):name = k.get_text().strip().split(' ')[0]names.append(name)# 提名者有多个,拼接提名者信息nomination = ' '.join(names)nominations.append(nomination)# 写入CSV文件中for year, win, nomination in zip(years, wins, nominations):print(year, win, nomination)filename = filenames[num1]with open(filename, 'a+') as f:f.write(year + ',' + win + ',' + nomination + '\n')f.close()if __name__ == '__main__':for i in range(4):num1 = ifor j in range(1, 10):if j == 1:num2 = ''else:num2 = -jget_message(num1, num2)

成功获取数据

这里发现网站上少了、的数据。需要手动添加

数据可视化

最佳男主角

丹尼尔·戴-刘易斯是目前仅有的一位,三度问鼎奥斯卡最佳男主角的男演员。

那么他的三部获奖作品是哪些呢?

1990年的《我的左脚》,的《血色将至》,的《林肯》。

陪跑者一目了然。

一位是彼德·奥图,另一位则是理查德·伯顿。

最佳女主角

凯瑟琳·赫本「一马当先」。

她的四部获奖作品如下。

1934年的《清晨的荣誉》,1967年的《猜猜谁来吃晚餐》,1968年的《冬狮》,1982年的《金色池塘》。

最佳女主角陪跑者有三位。

分别是黛博拉·蔻儿,朱迪·丹奇,艾琳·邓恩。

最佳男配角

第一名和男主角的情况类似,都是三次获奖。

只不过沃尔特·布伦南获奖时间都是在奥斯卡金像奖的初期。

即第9、11、13届获奖。

「小李子」的第一次提名, 就是最佳男配角提名。

女配角

黛安娜·维斯特和谢丽·温特斯并列第一。

和男配角的情况相似,陪跑者也不少。

男演员

为什么又把所有的信息汇总了呢。

主要是因为观察到,「小李子」在男配角也有提名。

那么难免会出现,两边都有获奖的情况出现。

比如这里的杰克·尼科尔森,《蝙蝠侠》中小丑的饰演者。

他就获得了两个最佳男主角和一个最佳男配角奖项。

陪跑者和最佳男主角的一模一样。

一位彼德·奥图,一位理查德·伯顿。

女演员

发现梅丽尔·斯特里普一共获得了21次提名。

这应该是目前奥斯卡获得提名最多的演员了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。