做教育行业网站,二手网站哪些做的比较好,广州新塘网站制作推广,那个视频网站可以做gif目录 主角查看与分析 爬取可视化分析猫眼电影上座率前10分析猫眼电影票房场均人次前10分析猫眼电影票票房占比分析 主角查看与分析 爬取
对猫眼电影票房进行爬取#xff0c;首先我们打开猫眼 接着我们想要进行数据抓包#xff0c;就要看网站的具体内容#xff0c;通过按F12… 目录 主角查看与分析 爬取可视化分析猫眼电影上座率前10分析猫眼电影票房场均人次前10分析猫眼电影票票房占比分析 主角查看与分析 爬取
对猫眼电影票房进行爬取首先我们打开猫眼 接着我们想要进行数据抓包就要看网站的具体内容通过按F12我们可以看到详细信息。
通过两个对比我们不难发现User-Agent和 signKey数据是变化的平台使用了数据加密 所以我们需要对User-Agent与signKey分别进行解密。
通过造一个content字符串包含请求方法、时间戳、User-Agent、index等信息并对其进行MD5加密得到sign。最后将这些参数放入params字典中准备发送请求。
def getData():url https://piaofang.maoyan.com/dashboard-ajax/movieuseragents Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.183headers {User-Agent:useragents,Referer:https://piaofang.maoyan.com/dashboard/movie}useragents str(base64.b64encode(useragents.encode(utf-8)),utf-8)index str(round(random.random() * 1000))times str(math.ceil(time.time() * 1000))content methodGETtimeStamp{}User-Agent{}index{}channelId40009sVersion2keyA013F70DB97834C0A5492378BD76C53A.format(times,useragents,index)md5 hashlib.md5()md5.update(content.encode(utf-8))sign md5.hexdigest()params {orderType: 0,uuid: 17d79b87a00c8-015087c7514df4-5919145b-144000-17d79b87a00c8,# 时间戳timeStamp: times,# base64加密User-Agent: useragents,# 随机数 * 1000取整index: index,channelId: 40009,sVersion: 2,# md5加密signKey: sign}接着我们就可以对于猫眼电影票房数据进行爬取了比如上座率、场均人次、票房占比、电影名称、上映时间、综合票房、排片场次和排片占比等。 resps requests.get(url url , headers headers, params params).json()# print(resps)# 上座率数据缺省值这么使用数据data_avgSeatView jsonpath.jsonpath(resps, $..avgSeatView)# print(data_avgSeatView)# 场均人次data_avgShowViewjsonpath.jsonpath(resps,$..avgShowView)# 票房占比data_boxRatejsonpath.jsonpath(resps,$..boxRate)# 电影名称data_namejsonpath.jsonpath(resps,$..movieName)# 上映时间data_timejsonpath.jsonpath(resps,$..releaseInfo)# 综合票房data_sumBoxDescjsonpath.jsonpath(resps,$..sumBoxDesc)# 排片场次data_showCountjsonpath.jsonpath(resps,$..showCount)# 排片占比data_showCountRatejsonpath.jsonpath(resps,$..showCountRate)data{电影名称:data_name,上映时间:data_time,上座率:data_avgSeatView,场均人次:data_avgShowView,票房占比:data_boxRate,综合票房:data_sumBoxDesc,排片场次:data_showCount,排片占比:data_showCountRate}df pd.DataFrame(pd.DataFrame.from_dict(data, orientindex).values.T, columnslist(data.keys()))print(df)df.to_csv(猫眼电影1.csv,indexFalse,encodingutf-8)通过DataFrame输出到控制台我们可以看到爬取成功。
可视化分析
import pandas as pd
datapd.read_csv(猫眼电影1.csv)数据缺省值处理
# 去除空值
data.dropna(inplaceTrue)
data猫眼电影上座率前10分析
data_sorted data.sort_values(by上座率, ascendingFalse)
data_top10data_sorted.head(10)
data_top10data_top10[电影名称].tolist()percentagedata_top10[上座率].tolist()
data_shangan[percentage.replace(%, ) for percentage in percentage]
data_shanganfrom pyecharts.charts import Bar,Line,Map,Page,Pie
from pyecharts import options as opts
from pyecharts.globals import SymbolType
from pyecharts.charts import Bar
# from pyecharts.charts import opts
#条形图
#bar1 Bar(init_optsopts.InitOpts(width1350px, height750px))
bar1 Bar()
bar1.add_xaxis(data_top10[电影名称].tolist())
bar1.add_yaxis(, data_shangan)
bar1.set_global_opts(title_optsopts.TitleOpts(title猫眼电影上座率前10分析),xaxis_optsopts.AxisOpts(axislabel_optsopts.LabelOpts(rotate-15)),visualmap_optsopts.VisualMapOpts(max_28669)) bar1.render_notebook()猫眼电影票房场均人次前10分析
data_sum data.groupby(电影名称)[场均人次].sum().sort_values(ascendingFalse)
data_sum[:10]bar3 Bar()
bar3.add_xaxis(data_sum[:10].index.tolist())
bar3.add_yaxis(, data_sum[:10].values.tolist())
bar3.set_global_opts(title_optsopts.TitleOpts(title猫眼电影票房场均人次前10分析),visualmap_optsopts.VisualMapOpts(max_900))
bar3.render_notebook()猫眼电影票票房占比分析
data_pf data.groupby(电影名称)[票房占比].sum().sort_values(ascendingFalse)
data_pfzbdata_pf.tail(24)
data_pfzb.head(10)data_pftop10 [list(z) for z in zip(data_pf.index.tolist(), data_pf.values.tolist())]# 绘制饼图
pie1 Pie()
pie1.add(, data_pftop10, radius[35%, 60%])
pie1.set_global_opts(title_optsopts.TitleOpts(title猫眼电影票票房占比分析), legend_optsopts.LegendOpts(orientvertical, pos_top15%, pos_left2%))
pie1.set_series_opts(label_optsopts.LabelOpts(formatter{b}:{d}%))
pie1.set_colors([#EF9050, #3B7BA9, #6FB27C, #FFAF34, #D8BFD8, #00BFFF, #7FFFAA])
pie1.render_notebook()