1、项目介绍

技术栈:
Python语言、Flask框架、MySQL数据库、Echarts可视化、requests爬虫、艺恩电影票房网

2、项目界面

(1)地区票房占有率分析
在这里插入图片描述

(2)月份票房分析
在这里插入图片描述

(3)电影类型票房占有率
在这里插入图片描述

(4)首页展示
在这里插入图片描述

(5)实时票房排名

在这里插入图片描述

3、项目说明

电影票房数采集分析可视化系统是一个基于Python语言、Flask框架、MySQL数据库、Echarts可视化和requests爬虫技术的系统。该系统的主要功能是采集艺恩电影票房网HTML页面中的电影票房数据,并进行分析和可视化展示。

系统的工作流程如下:首先,通过使用requests爬虫技术,系统会自动从艺恩电影票房网上获取HTML页面。然后,使用Python语言和Flask框架将获取到的HTML页面进行解析和处理,并将数据存储到MySQL数据库中。

在数据库中存储了大量的电影票房数据后,系统可以根据用户需求进行数据分析和可视化展示。通过使用Echarts可视化技术,系统可以生成各种图表,如折线图、柱状图、饼图等,来展示电影票房的变化趋势、不同电影的票房对比等信息。

用户可以通过系统的界面进行操作,选择不同的时间段、地区、电影类型等条件,系统会根据用户的选择生成相应的图表和分析结果。用户还可以进行数据导出和分享,方便与他人进行交流和讨论。

通过该系统,用户可以方便地获取电影票房数据,并进行深入的分析和可视化展示。这对于电影行业的从业者、研究人员以及影迷来说都是一个有价值的工具。同时,由于系统避免了可能在中国是敏感的内容,因此可以放心使用。

4、核心代码


from selenium.webdriver import Chrome
from selenium.webdriver.support.select import Select
import sys
sys.path.append('utils')
import mysqlHelper
import datetime
import time


# 获取列表信息
def getData1(username):
    web = Chrome()
    web.get("https://www.endata.com.cn/BoxOffice/BO/Year/index.html")
    # 找到下拉菜单
    sel_list = web.find_element_by_xpath('//*[@id="OptionDate"]')
    sel = Select(sel_list)
    # 初始化信息列表
    movie_id = []
    movie_name = []
    movie_type = []
    movie_sale_number = []
    movie_average_sale = []
    movie_average_people = []
    movie_country = []
    movie_online_time = []
    movie_year = []
    startTime = datetime.datetime.now().strftime('%Y-%m-%d') + ' ' + time.strftime("%H:%M:%S")

    for s in range(len(sel.options)):
        # 使用index索引逐个选择下拉菜单
        sel.select_by_index(s)
        time.sleep(2)
        # 获取到每一个tr
        tr_list = web.find_elements_by_xpath('//*[@id="TableList"]/table/tbody/tr')
        for tr in range(len(tr_list)):
            # 获取select选中的值
            ele_sel = web.find_element_by_xpath('//*[@id="OptionDate"]')  # 获取Select元素对像
            year = ele_sel.get_attribute('value')  # 获取Select选中的值
            # 获取每一个tr里的信息
            money = tr_list[tr].find_element_by_xpath('./td[4]').text
            money = money.replace(',', '')
            movie_id.append(tr_list[tr].find_element_by_xpath('./td[1]').text)
            movie_name.append(tr_list[tr].find_element_by_xpath('./td[2]').text)
            movie_type.append(tr_list[tr].find_element_by_xpath('./td[3]').text)
            movie_sale_number.append(money)
            movie_average_sale.append(tr_list[tr].find_element_by_xpath('./td[5]').text)
            movie_average_people.append(tr_list[tr].find_element_by_xpath('./td[6]').text)
            movie_country.append(tr_list[tr].find_element_by_xpath('./td[7]').text)
            movie_online_time.append(tr_list[tr].find_element_by_xpath('./td[8]').text)
            movie_year.append(year)
    print('数据获取完毕。。。')
    web.close()
    rows = zip(movie_id,movie_name, movie_type, movie_sale_number, movie_average_sale, movie_average_people, movie_country,movie_online_time,movie_year)

    mysql = mysqlHelper.get_a_conn()
    sql = 'truncate table tb_movie_year'
    mysql.fetchall(sql)

    for row in rows:
        print(row)
        sql = 'insert into tb_movie_year (id,movie_name,movie_type,movie_money,movie_price,movie_peo,movie_country,movie_date,movie_year) values("%s","%s","%s","%s","%s","%s","%s","%s","%s")' % row
        mysql.execute(sql)
    print('数据入库完毕。。。')

    # 保存日志
    endTime = datetime.datetime.now().strftime('%Y-%m-%d') + ' ' + time.strftime("%H:%M:%S")
    url = 'https://www.endata.com.cn/BoxOffice/BO/Year/index.html'
    user_name = username
    sql = "SELECT count(1) num FROM tb_movie_year"
    result = mysql.fetchall(sql)
    data_num = result[0].get('num')
    sql = 'insert into tbl_data_log (user_name,start_time,end_time,data_num,data_url) values ("%s","%s","%s","%s","%s")' % (user_name,startTime,endTime,data_num,url)
    mysql.execute(sql)

if __name__ == '__main__':
    getData1("脚本录入")


🍅✌感兴趣的可以先收藏起来,点赞关注不迷路,想学习更多项目可以查看主页,大家在毕设选题,项目代码以及论文编写等相关问题都可以给我留言咨询,希望可以帮助同学们顺利毕业!🍅✌

5、源码获取方式

🍅由于篇幅限制,获取完整文章或源码、代做项目的,拉到文章底部即可看到个人联系方式。🍅

点赞、收藏、关注,不迷路,下方查看👇🏻获取联系方式👇🏻

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐