最近朋友圈和微博里的动画《哪吒之魔童降世》被刷屏了。对哪吒的记忆还停留在小时候看的动画片里:是他,是他,是他,我们的哪吒小朋友。上映14天,累计票房31.9亿,位列中国电影票房历史第8位。毫不奇怪,它最终会进入排名前五。为了给大家一个更直观的感受,我用Python爬取分析了Movie相关的数据数据源地址:http://piaofang.baidu.com/贴出代码@classmethoddefspider(cls):cls.session.get("https://piaofang.baidu.com/?sfrom=wise_film_box")lz_list=[]szw_list=[]forrin[datetime.now()-timedelta(days=i)foriinrange(0,14)]:params={"pagelets[]":"index-overall","reqID":"28","sfrom":"wise_film_box","date":r.strftime("%Y-%m-%d"),"attr":"3,4,5,6","t":int(time.time()*1000),}response=cls.session.get("https://piaofang.baidu.com/",params=params).textresult=eval(re.findall("BigPipe.onPageletArrive\((.*?)\)",response)[0])selector=Selector(text=result.get("html"))li_list=selector.css(".detail-list.listdd")fordinrange(len(li_list)):dic={}name=li_list[d].css("h3b::text").extract_first()如果名称中有'Nezha'或名称中有“Agni”:total_box=li_list[d].css("h3span::attr(data-box-office)").extract_first()#总票房box=li_list[d].css("divspan[data-index='3']::text").extract_first()#实时票房比=li_list[d].css("divspan[data-index='4']::text").extract_first()#票房ratiomovie_ratio=li_list[d].css("divspan[data-index='5']::text").extract_first()#排列比例dic["date"]=r.strftime("%Y-%m-%d")dic["total_box"]=float(total_box.replace("100million",""))*10000if"100million"intotal_boxelsetotal_box.replace("10000","")dic["box"]=float(box.replace("100million",""))*10000if"100million"inboxelsebox.replace("10000","")dic["ratio"]=ratiodic["movie_ratio"]=movie_ratiolz_list.append(dic)if'Nezha'innameelseszw_list.append(dic)returnlz_list,szw_list这个是类方法,因为用到了类变量,所以上面有装饰器也可以正常写。以上代码爬取了《哪吒之魔童降世》和《烈火英雄》从发布到现在的相关数据。数据可视化主要是基于pyecharts模块进行数据可视化。总票房走势图看票房走势,加上周末。两天,40亿不是梦部分代码如下:@staticmethoddefline_base(l1,l2)->Line:lh_list=[y["total_box"]foryinl2]lh_list.extend([0for_inrange(3)])#前三天是0c=(Line(init_opts=opts.InitOpts(bg_color="",page_title="totalboxoffice")).add_xaxis([y["date"]foryinreversed(l1)]).add_yaxis("哪吒之魔童降世",[y["total_box"]foryinreversed(l1)],is_smooth=True,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")])).add_yaxis("烈火英雄",reversed(lh_list),is_smooth=True,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_="max")])).set_global_opts(title_opts=opts.TitleOpts(title="总票房",subtitle_textstyle_opts={"color":"red"},subtitle="Unit:万元"),toolbox_opts=opts.ToolboxOpts()))returnc.render("line.html")来看看拍摄情况吧。嗯,味道像甜甜圈。某篮球巨星说..然后票房比例是多少?定档的影片只有38%,票房却占了一半。哪吒好强!更多技术资料请关注:gzitcast
