def Get_Detail(Details_Url):
Detail_Url = Base_Url + Details_Url
One_Detail = requests.get(url=Detail_Url, headers=Headers)
One_Detail_Html = One_Detail.content.decode('gbk')
Detail_Html = etree.HTML(One_Detail_Html)
Detail_Content = Detail_Html.xpath("//div[@id='Zoom']//text()")
Video_Name_CN,Video_Name,Video_Address,Video_Type,Video_language,Video_Date,Video_Number,Video_Time,Video_Daoyan,Video_Yanyuan_list = None,None,None,None,None,None,None,None,None,None
for index, info in enumerate(Detail_Content):
if info.startswith('◎译 名'):
Video_Name_CN = info.replace('◎译 名', '').strip()
if info.startswith('◎片 名'):
Video_Name = info.replace('◎片 名', '').strip()
if info.startswith('◎产 地'):
Video_Address = info.replace('◎产 地', '').strip()
if info.startswith('◎类 别'):
Video_Type = info.replace('◎类 别', '').strip()
if info.startswith('◎语 言'):
Video_language = info.replace('◎语 言', '').strip()
if info.startswith('◎上映日期'):
Video_Date = info.replace('◎上映日期', '').strip()
if info.startswith('◎豆瓣评分'):
Video_Number = info.replace('◎豆瓣评分', '').strip()
if info.startswith('◎片 长'):
Video_Time = info.replace('◎片 长', '').strip()
if info.startswith('◎导 演'):
Video_Daoyan = info.replace('◎导 演', '').strip()
if info.startswith('◎主 演'):
Video_Yanyuan_list = []
Video_Yanyuan = info.replace('◎主 演', '').strip()
Video_Yanyuan_list.append(Video_Yanyuan)
for x in range(index + 1, len(Detail_Content)):
actor = Detail_Content[x].strip()
if actor.startswith("◎"):
break
Video_Yanyuan_list.append(actor)
print(Video_Name_CN,Video_Date,Video_Time)
f.flush()
csvwriter.writerow((Video_Name_CN,Video_Name,Video_Address,Video_Type,Video_language,Video_Date,Video_Number,Video_Time,Video_Daoyan,Video_Yanyuan_list))
except:
保存数据:csv
if __name__ == '__main__':
with open('movies.csv','a',encoding='utf-8',newline='')as f:
csvwriter = csv.writer(f)
csvwriter.writerow(('Video_Name_CN','Video_Name','Video_Address','Video_Type','Video_language','Video_Date','Video_Number','Video_Time','Video_Daoyan','Video_Yanyuan_list'))
spider(117)
2.爬取目标
本次爬取的目标网站是阳光电影网https://www.ygdy8.net,用到技术为requests+xpath。主要获取的目标是2016年-2023年之间的电影数据。
3.字段信息
获取的字段信息有电影译名、片名、产地、类别、语言、上映时间、豆瓣评分、片长、导演、主演等,具体说明如下:
字段名 | 含义 |
Video_Name_CN | 电影译名 |
Video_Name | 电影片名 |
Video_Address | 电影产地 |
Video_Type | 电影类别 |
Video_language | 电影语言 |
Video_Date | 上映时间 |
Video_Number | 电影评分 |
Video_Time | 片长 |
Video_Daoyan | 导演 |
Video_Yanyuan_list | 主演列表 |
二、数据预处理
技术工具:jupyter notebook
1.加载数据
首先使用pandas读取刚用爬虫获取的电影数据
2.异常值处理
这里处理的异常值包括缺失值和重复值
首先查看原数据各字段的缺失情况
从结果中可以发现缺失数据还蛮多的,这里就为了方便统一删除处理,同时也对重复数据进行删除
可以发现经过处理后的数据还剩1711条。
3.字段处理
由于爬取的原始数据中各个字段信息都很乱,出现很多“/”“,”之类的,这里统一进行处理,主要使用到pandas中的apply()函数,同时由于我们分析的数2016-2023年的电影数据,除此之外的进行删除处理
# 数据预处理
data['Video_Name_CN'] = data['Video_Name_CN'].apply(lambda x:x.split('/')[0]) # 处理Video_Name_CN
data['Video_Name'] = data['Video_Name'].apply(lambda x:x.split('/')[0]) # 处理Video_Name
data['Video_Address'] = data['Video_Address'].apply(lambda x:x.split('/')[0]) # 处理Video_Address
data['Video_Address'] = data['Video_Address'].apply(lambda x:x.split(',')[0].strip())
data['Video_language'] = data['Video_language'].apply(lambda x:x.split('/')[0])
data['Video_language'] = data['Video_language'].apply(lambda x:x.split(',')[0])
data['Video_Date'] = data['Video_Date'].apply(lambda x:x.split('(')[0].strip())
data['year'] = data['Video_Date'].apply(lambda x:x.split('-')[0])
data['Video_Number'] = data['Video_Number'].apply(lambda x:x.split('/')[0].strip())
data['Video_Number'] = pd.to_numeric(data['Video_Number'],errors='coerce')
data['Video_Time'] = data['Video_Time'].apply(lambda x:x.split('分钟')[0])
data['Video_Time'] = pd.to_numeric(data['Video_Time'],errors='coerce')
data['Video_Daoyan'] = data['Video_Daoyan'].apply(lambda x:x.split()[0])
data.drop(index=data[data['year']=='2013'].index,inplace=True)
data.drop(index=data[data['year']=='2014'].index,inplace=True)
data.drop(index=data[data['year']=='2015'].index,inplace=True)
data.dropna(inplace=True)
data.head()
三、数据可视化
1.导入可视化库
本次可视化主要用到matplotlib、seaborn、pyecharts等第三方库
import matplotlib.pylab as plt
import seaborn as sns
from pyecharts.charts import *
from pyecharts.faker import Faker
from pyecharts import options as opts
from pyecharts.globals import ThemeType
plt.rcParams['font.sans-serif'] = ['SimHei'] #解决中文显示
plt.rcParams['axes.unicode_minus'] = False #解决符号无法显示
2.分析各个国家发布的电影数量占比
# 分析各个国家发布的电影数量占比
df2 = data.groupby('Video_Address').size().sort_values(ascending=False).head(10)
a1 = Pie(init_opts=opts.InitOpts(theme = ThemeType.LIGHT))
a1.add(series_name='电影数量',
data_pair=[list(z) for z in zip(df2.index.tolist(),df2.values.tolist())],
radius='70%',
a1.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item'))
a1.render_notebook()
3.发布电影数量最高Top5导演
# 发布电影数量最高Top5导演
a2 = Bar(init_opts=opts.InitOpts(theme = ThemeType.DARK))
a2.add_xaxis(data['Video_Daoyan'].value_counts().head().index.tolist())
a2.add_yaxis('电影数量',data['Video_Daoyan'].value_counts().head().values.tolist())
a2.set_series_opts(itemstyle_opts=opts.ItemStyleOpts(color='#B87333'))
a2.set_series_opts(label_opts=opts.LabelOpts(position="top"))
a2.render_notebook()
4.分析电影平均评分最高的前十名国家
# 分析电影平均评分最高的前十名国家
data.groupby('Video_Address').mean()['Video_Number'].sort_values(ascending=False).head(10).plot(kind='barh')
plt.show()
5.分析哪种语言最受欢迎
# 分析哪种语言最受欢迎
from pyecharts.charts import WordCloud
import collections
result_list = []
for i in data['Video_language'].values:
word_list = str(i).split('/')
for j in word_list:
result_list.append(j)
result_list
word_counts = collections.Counter(result_list)
# 词频统计:获取前100最高频的词
word_counts_top = word_counts.most_common(100)
wc = WordCloud()
wc.add('',word_counts_top)
wc.render_notebook()
6.分析哪种类型电影最受欢迎
# 分析哪种类型电影最受欢迎
from pyecharts.charts import WordCloud
import collections
result_list = []
for i in data['Video_Type'].values:
word_list = str(i).split('/')
for j in word_list:
result_list.append(j)
result_list
word_counts = collections.Counter(result_list)
# 词频统计:获取前100最高频的词
word_counts_top = word_counts.most_common(100)
wc = WordCloud()
wc.add('',word_counts_top)
wc.render_notebook()
7.分析各种类型电影的比例
# 分析各种类型电影的比例
word_counts_top = word_counts.most_common(10)
a3 = Pie(init_opts=opts.InitOpts(theme = ThemeType.MACARONS))
a3.add(series_name='类型',
data_pair=word_counts_top,
rosetype='radius',
radius='60%',
a3.set_global_opts(title_opts=opts.TitleOpts(title="各种类型电影的比例",
pos_left='center',
pos_top=50))
a3.set_series_opts(tooltip_opts=opts.TooltipOpts(trigger='item',formatter='{a} <br/>{b}:{c} ({d}%)'))
a3.render_notebook()
8.分析电影片长的分布
# 分析电影片长的分布
sns.displot(data['Video_Time'],kde=True)
plt.show()
9.分析片长和评分的关系
# 分析片长和评分的关系
plt.scatter(data['Video_Time'],data['Video_Number'])
plt.title('片长和评分的关系',fontsize=15)
plt.xlabel('片长',fontsize=15)
plt.ylabel('评分',fontsize=15)
plt.show()
10.统计 2016 年到至今的产出的电影总数量
# 统计 2016 年到至今的产出的电影总数量
df1 = data.groupby('year').size()
line = Line()
line.add_xaxis(xaxis_data=df1.index.to_list())
line.add_yaxis('',y_axis=df1.values.tolist(),is_smooth = True)
line.set_global_opts(xaxis_opts=opts.AxisOpts(splitline_opts = opts.SplitLineOpts(is_show=True)))
line.render_notebook()
本次实验通过使用爬虫获取2016年-2023年的电影数据,并可视化分析的得出以下结论:
1.2016年-2019年电影数量逐渐增大,2019年达到最大值,从2020年开始迅速逐年下降。
2.发布电影数量最多的国家是中国和美国。
3.电影类型最多的剧情片。
4.电影片长呈正态分布,且片长和评分呈正相关关系。
《MySQL数据库基础与实战应用》免费送出!
内容简介:
MySQL 数据库性能优越,功能强大,是深受读者欢迎的开源数据库之一。本书由浅入深、循序渐进、系统地介绍了MySQL 的相关知识及其在数据库开发中的实际应用,并通过具体案例,帮助读者巩固所学知识,以便更好地开发实践。
全书共分为13 章,内容涵盖了认识与理解数据库、安装与配置MySQL 数据库、数据库与数据表的基本操作、数据查询、索引的创建与管理、视图的创建与管理、触发器、事务、事件、存储过程与存储函数、访问控制与安全管理、数据库的备份与恢复,以及综合的实践教学项目—图书管理系统数据库设计。
本书结合全国计算机等级考试二级MySQL 考试大纲编写,章节后面配有习题,适当融入思政元素,并配备了相应的教案与课件。本书内容丰富,讲解深入,适合初级、中级MySQL 用户,既可以作为各类高等职业技术院校与职业本科院校相关专业的课程教材,也可以作为广大MySQL 爱好者的实用参考书。
名单公布时间:2023-04-13 21:00:00
本次实验通过使用爬虫获取2016年-2023年的电影数据,并可视化分析的得出以下结论:1.2016年-2019年电影数量逐渐增大,2019年达到最大值,从2020年开始迅速逐年下降。2.发布电影数量最多的国家是中国和美国。3.电影类型最多的剧情片。4.电影片长呈正态分布,且片长和评分呈正相关关系。
使用python爬取tb网手机销售数据,并将数据存入csv文件中,并通过手机销售排名、手机价格排名以及手机词云 分析等内容进行数据分析可视化。本资源适合新手小白和在校学生,可根据具体需求更改,使用前请务必查看说明文档
#资源达人分享计划#
基于python实现分析爬取的中国电影票房数据并可视化源码.zip
基于python实现分析爬取的中国电影票房数据并可视化源码.zip
基于python实现分析爬取的中国电影票房数据并可视化源码.zip
利用python分析爬取的中国电影票房数据并聚类和可视化分析
关键词:大数据可视化 聚类分析
基于python实现分析爬取的中国电影票房数据并可视化源码.zip
利用python分析爬取的中国电影票房数据并聚类和可视化分析
关键词:大数据可视化 聚类分析
基于python实现分析爬取的中国电影票房数据并可视化源码.zip
利用python分析爬取的中国电影票房数据并聚类和可视化分析
关键词:大数据可视化 聚类分析
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
简单爬虫及数据分析一、前程无忧数据分析岗位爬虫二、Python 数据清洗+可视化分析1.数据清洗2. 数据可视化分析结论
一、前程无忧数据分析岗位爬虫
利用selenium+Xpath对前程无忧网站数据分析岗位的名称、公司、薪资、地址进行爬虫,具体代码如下:
from selenium.webdriver import Chrome
from selenium.webdriver.common.keys import Keys
impor.
1、进入此次爬取的页面点这里。2、按F12—> network3、ctrl+r 刷新 如图搜索一个电影名,找到数据位置,然后查看4、找到请求的url ‘?’后边的是参数,不要带上5、参数单独拿出来start:0 代表的是排行榜的第一部电影limit:20 代表的是一次返回20条数据(20部电影)start和limit都可以更改6、大致先看一看拿到的数据类型,然后解析,从其中拿到自己想要的数据 7、开始编写代码:
运行代码,查看结果: 拿到的的确是两条数据,然后从其中选择自己想要的数据出来,进行可视
作者:PyQuant
博客:https://blog.csdn.net/qq_33499889
慕课:https://mooc1-2.chaoxing.com/course/207443619.html
本案例适合作为大数据技术基础课程中数据爬取、清洗以及可视化部分的配套教学案例。通过本案例,能够达到以下教学效果:
培养学生爬取网站数据以及数据清洗、加工处理的能力。
案例中通过Python第三方库request获取网站实
期末将近,python也要结课了,老师要求我们写一个关于爬虫的程序作为大作业单纯的爬虫自然没有意思,那我们肯定需要将爬取到的数据进行展示以及分析处理由于自己自学了数据库方面的内容,所以也尝试着将数据库结合到该程序中于是就诞生了这样一个类似音乐播放器的应用程序以下为每一部分内容的对应博客地址:Python大作业——爬虫+可视化+数据分析+数据库(爬虫篇)Python大作业——爬虫+可视化+数据分析+数据库(可视化篇)
Python大作业——爬虫+可视化+数据分析+数据库(数据分析篇)Python大作业——爬虫
由图中可以发现这边的数据是 json 类型的
然后我们分析各排行榜中的url有何不同:这边我列举了3个排行榜的url出来,观察很容易发现其中的对应关系是一种字典的对应,即每个分类名字(type_name)都有自己对应的数字(type)对应。所以我就将其记录下来用一个字典进行存储:
电影分类对应关系表
下表是我查看并统计的,表比较长可以直接跳过有了上述准备之后,就可以开写爬虫了。
因为我已经写好了,所以就直接给出来。
(2)编写请求中使用的相
### 回答1:
Python是一种简单易学的编程语言,适合数据处理和分析。在爬取天气数据方面,Python有很多强大的第三方库可以帮助我们完成这项任务。
首先,我们可以使用BeautifulSoup库或Scrapy爬取天气网站上的数据。这些库可用于将HTML网页转换为Python对象,从而轻松地提取数据。
然后,我们可以使用pandas库将爬取的数据存储在DataFrame中,并对其进行有效的处理和分析。pandas提供了各种数据操作方法,例如连接、过滤、排序和分组,使我们能够有效的清理和整理数据。
最后,我们可以使用matplotlib或Seaborn等可视化库来创建数据可视化图表。这些库提供了各种绘图选项,例如折线图、散点图等,使我们能够更好地理解和分析数据。
总结来说,从爬取到处理再到可视化分析,Python提供了完整的工具链,使我们可以轻松地获取所需信息、分析数据并推出结论。
### 回答2:
Python是一门非常适合进行数据爬取和数据分析的语言。如果想要实现爬取天气数据并进行可视化分析,可以使用Python的第三方库进行实现。下面我们来详细介绍一下具体的步骤。
首先,我们需要选择合适的天气数据来源。在国内,有很多天气网站提供了API接口供开发者使用。例如,中国天气网、天气之子等等。我们可以选择其中一个合适的接口进行数据爬取。比如,我们可以爬取每天的温度、湿度、风力等信息,并将其存储到本地的数据库中或者保存为csv、txt等格式的文件。
接下来,我们需要将爬取到的天气数据进行可视化分析。这里我们可以使用Python的matplotlib库,它是一个非常强大的数据可视化工具。我们可以通过调用该库中的函数,绘制出各种类型的图表,如折线图、柱状图、散点图等等。具体的绘图方法,可以根据我们需要展示的信息以及分析目的,灵活选择。
最后,我们可以将经过可视化分析的数据图表进行可视化展示。Python提供了很多可视化库,比如Flask、Django等,可以将分析结果以Web页面的形式展现出来。另外,还可以使用Jupyter Notebook进行编程和可视化的交互式展示。
总之,通过Python进行天气数据的爬取和可视化分析,可以帮助我们更加全面、直观地了解天气情况,并从中发现有用的规律和趋势。而本文所提到的方法只是其中的一种,还有很多其他的可视化工具和数据分析思路,需要根据具体情况进行选择和应用。
### 回答3:
Python 是一种非常强大的编程语言,可用于爬取数据和可视化分析。在这里,我们将介绍如何使用 Python 爬取天气数据,并对其进行可视化分析。
1. 爬取天气数据
爬取天气数据的第一步是确定数据源。一些常见的数据源包括:天气预报和气象站数据。我们可以使用 Python 程序访问这些数据源,然后将其存储在 CSV 文件中。
以下是使用 Python 爬取天气数据的简单步骤:
- 导入所需的库:如requests、beautifulsoup4、csv等库;
- 定义爬取的网址:通过查看天气预报或气象站来确定要爬取的网址;
- 解析网页:使用BeautifulSoup库来解析HTML源代码;
- 提取数据:从HTML源代码中提取所需信息(例如,温度、湿度、气压等);
- 存储数据:利用Python的csv库将提取的数据存储在CSV文件中。
2. 可视化分析
Python还提供了各种库和工具,可对爬取的天气数据进行可视化分析。下面是一些常用的库和工具:
- Matplotlib:用于绘制图表和可视化;
- Pandas:用于加载和预处理数据;
- Seaborn:用于数据可视化和统计;
- Plotly:用于交互式绘图;
- Bokeh:用于高级交互式可视化。
可视化分析的步骤如下:
- 导入所需的库;
- 加载数据:从CSV文件中加载爬取的天气数据;
- 预处理数据:通过排序、过滤和合并数据等方式,为可视化做准备;
- 绘图:根据需要,使用Matplotlib、Seaborn、Plotly和Bokeh等库来绘制图表;
- 交互:使用Plotly和Bokeh等库创建交互式可视化。它们提供了各种控件,例如滑块、下拉菜单、复选框和单选按钮,以便用户能够自定义图表。
总之,使用Python爬取天气数据并进行可视化分析是一项有用的技能,使您能够更好地理解天气变化和趋势。