python基于爬虫技术的海量电影数据分析源码,数据处理分析可视化,GUI界面展示

本文介绍了一个基于Python爬虫技术的电影数据分析系统,包括后端爬虫、数据处理、可视化和GUI界面。系统由getData.py、pyec.py、GUI.py、main.py四个文件组成,涉及numpy、pandas等数据处理库和tkinter、pyecharts等可视化库。通过GUI界面展示在映、历史电影数据,以及票房预测和排片分析,提供电影市场全面洞察。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

基于爬虫技术的海量电影数据分析

介绍
一个基于爬虫技术的海量电影数据分析系统

系统架构
本系统主要分为四个部分,分别为后端爬虫抓取、数据处理分析可视化、GUI界面展示、启动运行,分别对应getData.py、pyec.py、GUI.py、main.py四个文件。
并且包含data文件夹用于存储系统所需或产生的数据文件。

所需依赖包
numpy、pandas、requests、json、sklearn、webbrowser、tkinter、collections、pyecharts

使用说明
在pycharm中打开项目,直接运行main.py文件即可。

代码详解

1、getData.py

该.py文件主要功能是抓取和读取电影数据,共包含8个函数,代码详解如下:

(1)、recently()
这一函数主要是抓取最近上映票房排名前十名的电影信息。

url = "https://ys.endata.cn/enlib-api/api/movie/getMovie_BoxOffice_Day_Chart.do"

header = {
   
"User-Agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36',
"Cookie": 'JSESSIONID=b2685bfa-aa4f-4359-ae96-57befaf8d1ec; route=4e39643a15b7003e568cadd862137cf3; Hm_lvt_82932fc4fc199c08b9a83c4c9d02af11=1649834963,1649852471,1649859039,1649900037; Hm_lpvt_82932fc4fc199c08b9a83c4c9d02af11=1649917933'
}

post_BoxOffice_Day_data = {
   
    'r': 0.7572955414768414,
    'datetype': 'Day',
    'date': datetime.now().strftime('%Y-%m-%d'),
    'sdate': datetime.now().strftime('%Y-%m-%d'),
    'edate': datetime.now().strftime('%Y-%m-%d'),
    'bserviceprice': 1
}

以上代码块是运行爬虫前的准备工作,包含抓取的网址url、爬虫所需的请求头、请求时需要附带的数据。

res = requests.post(url, headers=header, data=post_BoxOffice_Day_data).text
json_data = json.loads(res)
data0 = json_data['data']['table0']
data1 = json_data['data']['table1']

以上代码块是运行爬虫并将其解析为json形式,方便后面对数据进行取出。

movie_rank = []
movie_details_MovieName = []
movie_details_BoxOffice = []
movie_details_ShowCount = []
movie_details_AudienceCount = []
movie_details_Attendance = []

movie_percent_BoxOfficePercent = []
movie_percent_ShowCountPercent = []
movie_percent_AudienceCountPercent = []

以上代码是部分定义的所需的数据字段。

for i in range(10):
    movie_rank.append(data0[i]['Irank'])
    movie_details_MovieName.append(data0[i]['MovieName'])
    movie_details_BoxOffice.append(data0[i]['BoxOffice'])
    movie_details_ShowCount.append(data0[i]['ShowCount'])
    movie_details_AudienceCount.append(data0[i]['AudienceCount'])
    movie_details_Attendance.append(data0[i]['Attendance'])

以上是从json数据中取数据的过程。

top10_data = pd.DataFrame({
   
    "影片排名": movie_rank,
    "影片名称": movie_details_MovieName,
    "影片票房": movie_details_BoxOffice,
    "影片场次": movie_details_ShowCount,
    "影片人次": movie_details_AudienceCount,
    "上座率": movie_details_Attendance,
    "影片票房占比": movie_percent_BoxOfficePercent,
    "影片场次占比": movie_percent_ShowCountPercent,
    "影片人次占比": movie_percent_AudienceCountPercent,
    "一线城市票房": movie_city1_BoxOffice,
    "一线城市场次": movie_city1_ShowCount,
    "一线城市人次": movie_city1_AudienceCount,
    "二线城市票房": movie_city2_BoxOffice,
    "二线城市场次": movie_city2_ShowCount,
    "二线城市人次": movie_city2_AudienceCount,
    "三线城市票房": movie_city3_BoxOffice,
    "三线城市场次": movie_city3_ShowCount,
    "三线城市人次": movie_city3_AudienceCount,
    "四线城市票房": movie_city4_BoxOffice,
    "四线城市场次": movie_city4_ShowCount,
    "四线城市人次": movie_city4_AudienceCount,
    "其它票房": movie_others_BoxOffice,
    "其它场次": movie_others_ShowCount,
    "其它人次": movie_others_AudienceCount
})
print(top10_data)
top10_data.to_csv("data/top10_data.csv", encoding='gbk', index=False)

以上是定义数据表并将数据表填满,打印数据表,保存数据表的过程。

(2)、showing()
这一函数主要抓取最近正在上映的所有电影的基本信息。具体代码块功能参照recently函数。

(3)、history()
这一函数主要是读取历史电影数据并返回列表格式

def history():
	    data = pd.read_csv("data/moviesBoxOffice.csv", encoding='gbk')
	    data = np.array(data[:100]).tolist()
	    return data

以上为利用pandas库读取csv文件,numpy对DataFrame形式数据转换为list格式的过程。

(4)、predict_data()
这一函数主要是读取历史电影数据进行建模,建模完成后,读取需要预测的在映电影数据,对其进行票房预测并返回。

imp = SimpleImputer(missing_values=np.nan, strategy='mean')
data = pd.read_csv("data/moviesBoxOffice.csv", encoding='gbk')
x = data[["总场次", "总人次(万)", "上映天数", "猫眼想看人数", "淘票票想看人数", "豆瓣想看人数"]]
y = data["总票房(万)"]
x = imp.fit_transform(np.array(x))

以上代码块主要是利用pandas读取历史电影数据,然后利用sklearn库中的SimpleImputer对数据中的空值进行填充。

reg = LinearRegression().fit(x, y)

predict_data = pd.read_csv("data/recentlyMovies.csv", encoding='gbk')
name = predict_data['影片名称']
current = predict_data['累计票房']
predict_data['当前场次'] = (predict_data['当前场次'] / predict_data["累计上映天数"]) * 50 + predict_data["累计上映天数"]
predict_data['当前人次'] = (predict_data['当前人次'] / predict_data["累计上映天数"]) * 50 + predict_data["累计上映天数"]
predict_data['累计上映天数'] = predict_data["累计上映天数"] + 50
predict_data = predict_data[["当前场次", "当前人次", "累计上映天数", "猫眼想看数", "淘票票想看数", "豆瓣想看数"]]
predict_data = imp.fit_transform(predict_data)

以上代码主要是对历史电影数据进行建模并读取在映电影数据,对在映电影数据进行特征选择和处理

result = reg.predict(predict_data)
for i in range(len(result)):
    if result[i] < 0:
        result[i] = (0 - result[i])
    result[i] = round((result[i] + current[i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值