中国电影票房分析

一、数据获取

爬取中国电影票房参考:https://blog.csdn.net/weixin_44690846/article/details/104325430、
有两个需要注意的地方:

  1. chromedriver下载
    解决:'chromedriver' executable needs to be in PATH问题
    参考:
    https://blog.csdn.net/weixin_41990913/article/details/90936149
    需要注意自己的chrome浏览器版本
    帮助 -> 关于google chrome 查看自己的版本号,下载时也要相匹配

参考: https://blog.csdn.net/weixin_44690846/article/details/104325430
http://www.endata.com.cn/BoxOffice/BO/Year/index.html

import os
import time
from selenium import webdriver #导入webdriver模块
from lxml import etree
import pandas as pd
local_data='D:/mydata'
local_main2=local_data+'/'+'movie.csv'#设置路径
if not os.path.exists(local_main2):
    data = pd.DataFrame(columns=['电影名称','电影详情页','电影类型','电影票房','国家及地区','上映时间'])
    data.to_csv(local_main2,index = None,encoding="utf_8_sig")
from time import *
driver = webdriver.Chrome() #打开Google浏览器
url = 'http://www.endata.com.cn/BoxOffice/' #中国票房url
driver.get(url) #请求url
sleep(2) #等待2秒
driver.find_element_by_xpath('//nav[@class="box-nav"]/ul/li[4]').click() #点击->票房
sleep(5)
driver.find_element_by_xpath('//ul[@class="child-sel"]/li[6]').click() #点击->年度票房
sleep(2)
for i in range(1,10):
    print("This is No.",i)
    driver.find_element_by_xpath('//select[@id="OptionDate"]/option[' + str(i) + ']').click()
    sleep(2)
    response = driver.page_source  #解析网页
    selector = etree.HTML(driver.page_source) #解析网页
    
    url_0 = selector.xpath('//td[@class="movie-name"]/a/@onclick') #未处理详情页url
    url = [] #处理后详情页url
    for j in range(len(url_0)):
        print(url_0)
        url.append('http://www.endata.com.cn/BoxOffice/MovieStock/movieShow.html?' + url_0[j].split('?')[1].split("'")[0])
    name = selector.xpath('//td[@class="movie-name"]/a/p/text()') #电影名称
    movie_type = selector.xpath('//table[@class="bo-table img-table"]//tr/td[3]/text()') #电影类型
    box_office = selector.xpath('//table[@class="bo-table img-table"]//tr/td[4]/text()') #电影票房
    price = selector.xpath('//table[@class="bo-table img-table"]//tr/td[5]/text()') #平均票价
    people = selector.xpath('//table[@class="bo-table img-table"]//tr/td[6]/text()') #场均人次
    country = selector.xpath('//table[@class="bo-table img-table"]//tr/td[7]/text()') #国家及地区
    time = selector.xpath('//table[@class="bo-table img-table"]//tr/td[8]/text()') #上映时间
    print(len(url))
    for i in range(len(url)):
        data = pd.DataFrame({'电影名称':name[i],
                             '电影详情页':url[i],
                             '电影类型':movie_type[i],
                             '电影票房':box_office[i],
                             '平均票价':price[i],
                             '场均人次':people[i],
                             '国家及地区':country[i],
                             '上映时间':time[i]},
                             columns=['电影名称','电影详情页','电影类型','电影票房','平均票价','场均人次','国家及地区','上映时间'],index=[0])
        data.to_csv(local_main2,index = None,mode = 'a' ,sep=',',encoding="utf_8_sig")
image.png

注意要定位到这里的话,可以先搜年度两个字,要去查一下标签。


image.png

二、数据分析

参考了:https://mp.weixin.qq.com/s?__biz=MzI1MDA4MzcxMA==&mid=2650781819&idx=1&sn=96b67ba3f8fe07e7d3d2368f279bca3d&chksm=f18cb86ac6fb317cc01cab101457c3eadef60bd96cc7b8cc47277b6e5dd806cd7fb81669ebf1&token=677104002&lang=zh_CN&scene=21#wechat_redirect
琢磨的很久,使用web获取数据失败,所以获得了csv文件,上传。

image.png

上图完全参考了以上教程:
总结:
文本属性:作为分析的角度:多个文本类型的话,做表格展示。
数值属性:核心指标,注意分析是总和还是平均值。

你可能感兴趣的:(中国电影票房分析)