# 基于爬虫技术的海量电影数据分析
#### 介绍
一个基于爬虫技术的海量电影数据分析系统
#### 系统架构
本系统主要分为四个部分,分别为后端爬虫抓取、数据处理分析可视化、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、爬虫所需的请求头、请求时需要附带的数据。
python
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]) / 100000000, 2)
predict_result = pd.DataFrame({
"影片名称": name,
"预测票房": result
})
predict_result.to_csv("data/predict_result.csv", encoding='gbk', index=False)
return np.array(predict_result).tolist()
以上代码是对在映电影数据进行票房预测和制作输出数据表并返回的过程
###### (5)hotMovies()
这一函数主要是抓取当前在映票房前五的电影七天内的票房数据,具体代码块功能参照recently函数
###### (6)special()
这一函数主要抓取的是当前电影市场特效影厅种类及其票房占比的数据,具体代码块功能参照recently函数。
###### (7)champion_year()
这一函数主要抓取的是近十年来中国电影市场每年票房冠军影片的票房数据,还抓取了近十年国内电影市场的票房和上映影片数量等相关数据,具体代码块功能参照recently函数。
###### (8)Tablets()
这一函数主要是对近期在映电影的排片数据进行抓取并返回,具体代码块功能参照recently函数。
##### 2.pyec.py
该.py文件主要是对getData.py文件获取到的数据进行可视化操作,共有3个函数,代码功能详解如下:
###### (1)History()
该函数主要是对历史电影数据进行可视化,具体代码如下:
csv_file = './moviesBoxOffice.csv' # 导入csv数据'
data = pd.read_csv(csv_file, encoding='gbk')
data_type = d
没有合适的资源?快使用搜索试试~ 我知道了~
基于Python的电影数据可视化分析系统.zip
共26个文件
csv:9个
xml:5个
py:4个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 152 浏览量
2023-08-31
15:43:07
上传
评论 1
收藏 171KB ZIP 举报
温馨提示
基于Python的电影数据可视化分析系统.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!小白也可放心下载使用。 基于Python的电影数据可视化分析系统.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!小白也可放心下载使用。基于Python的电影数据可视化分析系统.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!小白也可放心下载使用。基于Python的电影数据可视化分析系统.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!小白也可放心下载使用。基于Python的电影数据可视化分析系统.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!小白也可放心下载使用。基于Python的电影数据可视化分析系统.zip 该项目是个人大作业项目源码,评审分达到95分以上,都经过严格调试,确保可以运行!小白也可放心下载使用。基于Python的电影数据可视化分析系统.zip 该项
资源推荐
资源详情
资源评论
收起资源包目录
基于Python的电影数据可视化分析系统 (3).zip (26个子文件)
基于Python的电影数据可视化分析系统
getData.py 21KB
数据大盘.html 36KB
main.py 84B
data
moviesBoxOffice.csv 162KB
movies_year.csv 472B
top10_data.csv 2KB
movies_tablets.csv 4KB
predict_result.csv 1KB
top_movie.csv 341B
movies_champion.csv 335B
recentlyMovies.csv 8KB
special.csv 102B
logo.png 23KB
在映电影分析.html 61KB
电影票房分析.html 371KB
.idea
vcs.xml 180B
misc.xml 288B
inspectionProfiles
profiles_settings.xml 174B
modules.xml 286B
.gitignore 39B
encodings.xml 425B
MoviesDataAnalyse.iml 763B
pyec.py 20KB
GUI.py 17KB
.gitignore 2KB
README.md 26KB
共 26 条
- 1
资源评论
- xinvn2023-11-06内容与描述一致,超赞的资源,值得借鉴的内容很多,支持!
盈梓的博客
- 粉丝: 7040
- 资源: 1616
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功