范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

Python项目实战某瓣热门电影分析(爬虫数据分析)

  项目需求获取某瓣前100名热门电影详细内容,包括:名称、类型、制片国家、语言、上映时间、片长、评分、评价人数。 根据获取的数据分析,包括:上映时间分布情况、评分分布情况、类型分布情况 项目难点获取数据时,有部分内容保存在
  下,无法直接使用Xpath获取 上映时间有多个,按照国内上映时间分布,这里需要处理一下 类型分布中,一个电影多个类型,需要分解处理
  这个是本文的重点。 数据抓取在进行实际的数据抓取的过程中,发现数据实际保存在Json数据包中,原网页无法获取,前100名电影的实际地址。 每一页只显示20个数据,且每次以20个为一组的新增。 Json我们需要的url数据保存在 ["subjects"][m]["url"]  中,其中m为循环,每一组循环20次。 代码实例获取前100名电影的实际url地址  def get_move_url():      move_url = []         for i in range(0,100,20):          url = f"https://xxx.xxx.xxx/j/search_subjects?type=movie&tag=热门&sort=recommend&page_limit=20&page_start={i}"          r_response = get(url=url,headers=headers).json()          for m in range(20):              move_url.append(r_response["subjects"][m]["url"])      return move_url根据每个url地址,获取相应的内容,注意br下内容、上映时间,这里全部处理,并保存excel文件。  def get_data():      move_url = get_move_url()      df = pd.DataFrame(columns=["电影名","电影类型","制片国家","语言","上映时间","片长","评分","评价人数"])      for m in range(len(move_url)):          r_resopnse = get(url=move_url[m],headers=headers).text          res = Selector(r_resopnse)          name = res.xpath("//*[@id="content"]/h1/span[1]/text()").get()          move_type = res.xpath("*//span[@property="v:genre"]/text()").getall()          # ! 上映时间需要处理,以第一个时间为基准,且还要去掉()里面的内容           move_time = res.xpath("*//span[@property="v:initialReleaseDate"]/text()").getall()          move_time = Move_Time(move_time=move_time)          move_len = res.xpath("*//span[@property="v:runtime"]/text()").get()          move_len = Move_Len(move_len=move_len)          move_score = res.xpath("//*[@id="interest_sectl"]/p[1]/p[2]/strong/text()").get()          move_people_num = res.xpath("//*[@id="interest_sectl"]/p[1]/p[2]/p/p[2]/a/span/text()").get()          # ! 语言与制片地区在
  下,需要特殊处理          move_br = res.xpath("/html/body/p[3]/p[1]/p[2]/p[1]/p[1]/p[1]/p[1]/p[2]/descendant-or-self::text()").getall()          for i in range(len(move_br)):              if move_br[i] == "制片国家/地区:":                  country = move_br[i+1]                  # ? 去除里面所有的空格                  move_country = country.replace(" ","")              elif move_br[i] == "语言:":                  language = move_br[i+1]                  move_language = language.replace(" ","")                  # ! 后面就不需要了                  break          df.loc[m]=[name,move_type,move_country,move_language,move_time,move_len,move_score,move_people_num]      df.to_excel("./result.xlsx",index=False)  上映时间的处理(以中国上映时间为基准,其他的取消)  def Move_Time(move_time):      # ? 以中国上映时间为基准,去掉()与里面中文的内容      time = re.sub("[一-龥]","",move_time[0])      # ? 测试时,发现有些数据不是很全面,用下列方法,多次删除无用数据      time = time.strip("(").strip(")").strip(r"/").strip("(")          return time时长处理,取消 分钟和()   def Move_Len(move_len):      # ! 注意 时长类型 byte 需要修改为 str      len = re.sub("[一-龥]","",str(move_len))        len = len.strip("()")       return len     数据分析 上映时间分布
  df2 = df["上映时间"].value_counts()  评分情况分布  plt.figure(figsize=(20,8),dpi=80)  plt.hist(df["评分"].values,bins=20)  max_ = df["评分"].max()  min_ = df["评分"].min()  t1 = np.linspace(min_,max_,21)  plt.xticks(t1)  plt.show()电影类型分布(重点)  # ! 电影类型分布  move_type = df["电影类型"].str.split(",")  move_type = move_type.apply(pd.Series)  move_type = move_type.apply(pd.value_counts)  move_type.unstack()  move_type = move_type.unstack().dropna().reset_index()  move_type.columns =["level_0","type","counts"]  movie_type_m = move_type.drop(["level_0"],axis=1).groupby("type").sum().sort_values(by=["counts"],ascending=False).reset_index()    # print(movie_type_m["counts"].to_list())  size= movie_type_m["counts"].to_list()  name = movie_type_m["type"].to_list()  colors = ["steelblue","#9999ff","red","indianred", "green","yellow","orange"]  plot = squarify.plot(  sizes=size, # 指定绘图数据  color = colors,# 指定 定义颜   label=name,# 指定标签  value=size,# 添加数值标签  alpha = 0.6,# 指定透明度  edgecolor = "white",# 设置边界框为   linewidth =3 # 设置边框宽度为3  )  plt.rc("font", size=12)  # 设置标题   plot.set_title("电影类型分布情况",fontdict = {"fontsize":20})  # 去除坐标轴  plt.axis("off")  # 去除上边框和右边框刻度  plt.tick_params(top = "off", right = "off")  plt.rcParams["font.sans-serif"]=["SimHei"]    plt.rcParams["axes.unicode_minus"] = False  # 显 图形  plt.show()重点提示显示中文时,出现了中文乱码的情况,这里给出处理方法  plt.rcParams["font.sans-serif"]=["SimHei"]    plt.rcParams["axes.unicode_minus"] = False获取br里的内容是全部的,需要根据实际情况分析,获取指定内容  move_br = res.xpath("/html/body/p[3]/p[1]/p[2]/p[1]/p[1]/p[1]/p[1]/p[2]/descendant-or-self::text()").getall()          for i in range(len(move_br)):              if move_br[i] == "制片国家/地区:":                  country = move_br[i+1]                  # ? 去除里面所有的空格                  move_country = country.replace(" ","")              elif move_br[i] == "语言:":                  language = move_br[i+1]                  move_language = language.replace(" ","")                  # ! 后面就不需要了                  break在数据获取时,发现了一些数据缺失的情况,这里没有进行处理,后续需要修正 在进行电影类型分类分析时,存在 科幻感 [科幻]  同时存在的情况,这里没有处理,后续需要更正 未对每个类型的评分情况,进行分析,后续需要添加,在此记录一下。

C开发者怒了这个无用的模块设计最终会害死C!2018年年底,C标准委员会历史上规模最大的一次会议在美国SanDiego召开,讨论了哪些特性要加入到C20中。其中,Modules便是可能进入C20的一大重要特性一直以来C一直通智能制造面临人才荒!!导读(文说东道西宋华振)我们亟待解决的可能还是人才荒的问题。说明本文选自贝加莱工业自动化(中国)市场经理宋华振老师公众号说东道西,经授权发布!谈到智能制造,我们如何去实现,各自都有人工智能可以学什么专业?AI有哪些相关的职业?想从事和人工智能相关的工作,大学可以选什么专业呢?AI相关的职业可以简单介绍一下吗?人工智能是一门交叉学科,数学理论和计算机技术是其重要的组成部分。该领域的研究主要包括图像识别语言深度解析Python深度学习框架的对比从PyTorch到Mxnet,对比这些Python深度学习框架。选择什么深度学习框架一直是开发者非常关心的一个话题,而且深度学习框架之间的战争也越来越激烈。过去一段时间,机器之心发中国开发者真实现状40岁不做开发,算法工程师最稀缺!互联网的2018年,注定是不平凡的一年。浩浩荡荡的美国制裁中兴事件唤醒了科技界对芯片产业的重视,倒逼了一系列芯片方面的布局和投资互联网人口红利不断消耗,推动百度腾讯阿里巴巴等科技巨出自微软之手的黑科技HoloLens3或将拥有无限视野前几天的MWC2019发布会上,微软正式发布了HoloLens2混合现实设备,专为企业用户而打造。相较上一代设备,HoloLens2进行了全面的升级与更新。在HoloLens2中,来说说Kubernetes的运作机制启迪云解决方案架构师费海强Docker容器改变了人们对开发部署和维护软件的思考方式,利用现代操作系统的本机隔离功能,容器支持类似于虚拟机的关注点分离,但是与基于虚拟机监控程序的虚拟盘点博世大陆麦格纳佛吉亚安波福,2018财报数据大PK2018年,受整体经济环境及汽车市场下滑的影响,各零部件企业的2018年财务表现普遍不如往年。在艰难的市场环境,以及快速变化的行业格局下,企业如何保持竞争力,并实现可持续发展,或许携号转网即将全面实行,移动推出新型保号套餐,你会怎么选择呢?携号转网即将全面实行,移动推出新型保号套餐,你会怎么选择呢?说到国内的三大运营商,想必大家都不陌生,因为我们每天使用的手机都要配备运营商的电话卡,不然很多功能无法使用,中国移动作为创维电视发布新品Q40系列82吋版本售价22999元,欲挑战激光电视3月5日,创维在北京举行新品媒体沟通会,正式发布创维超清薄系列Q40OLED电视新品,旨在挑战激光电视这个品类。产品提供从43吋到82吋共7种尺寸的选择,以满足不同用户的不同需求。Intel宣布完全开放雷电技术IT之家3月5日消息最新USBIF最近公布了最新的USB命名规范,表示将会推出全新的USB4。0标准,USB4规范基于最近由英特尔公司提供的雷电协议规范,USB的带宽加倍,达到了4
几何构象增强AI算法,百度生物计算研究成果登Nature子刊机器之心发布机器之心编辑部近日,百度在国际顶级期刊Nature旗下子刊NatureMachineIntelligence(Impactscore16。65)上发表了AI生物计算的最再度抨击拜登无视特斯拉!马斯克留话若被白宫邀请他会顾全大局财联社(上海,编辑卞纯)讯,本周二,特斯拉首席执行官埃隆马斯克(ElonMusk)在给媒体的一封电邮中,再次指责美国总统拜登无视特斯拉,而更关注传统汽车制造商。但马斯克也试图向白宫得益于新的5G芯片iPhone14系列的电池续航有望提升供应链消息人士称,得益于新的5G芯片,iPhone14可以提供更长的电池续航时间,并具有WiFi6E连接功能。经济日报报道,台积电取代三星,获得了为iPhone14系列提供的5G射购买一台吸尘器需要考虑哪些因素?家庭主妇的经验之谈作为一种能够帮助消费者极大提升清洁效率和清洁深度的工具,吸尘器在科技的进步下开始逐渐浮现在了大众消费者的面前,区别于上世纪80年代那般傻大黑粗的造型,如今的吸尘器已经开始愈加轻量化删除了的手机号码要怎么找回来?一個一個再重新輸入唄手机联系人删除了怎么找回?手机联系人被删了很好找回的,现在我们手机上都存有很多重要的联系人,如果误删了那对自己的生活和工作会带来特别大的影响,尤其是那些客户的电汇总了关于手机流量卡的15个问题,快来看看有没有你想知道的吧问题一支持5G网络嘛?答所有的卡都是支持5G网络的问题二申请了多久发货?答一般申请在3个工作日发出移步订单查询里查询问题三激活入网当月费用如何计算?答号卡激活后立即生效。首月执行过你有哪些惊为天人的手机壁纸可以给大家分享呢?分享几张手机里一直保存的壁纸送给大家。太阳花花语光明,热情,阳光,乐观勇敢,积极向上。很开心回答楼主问题小编是一名手绘设计师绘画了一组惊为天人的作品人物独特个性高级感爆满趣味十足用使用lumia手机是一种怎样的体验?感谢您的阅读!可能有些人都不知道lumia是什么品牌?这款品牌实际上是诺基亚归属微软之后所推出的系列手机。它采用的实际上是windows系统,也就是微软的手机系统,这种设计风格实际手机买对不买贵,遵守3不碰原则,能避开大多数的坑手机现在成了大家日常生活最离不开的必需品,相信大家都和小租一样,除了睡觉手机必须无时不刻在自己身边,即使不用也要看得到才安心。虽然手机说不上多贵,但对大多数人来讲至少也要花上半个月央行数字货币研究所支持各种支付方式协调发展,数字人民币将和传统电子支付工具长期并存数字人民币与目前常用的电子支付工具相比,既互补也有差异。数字人民币可提高支付工具的多样性和通用性,有助于提升支付体系效率与安全。中国人民银行数字货币研究所创新部总经理吕远表示,虽然山东发布全球首张确定性网络经济日报济南2月23日讯(记者王金虎)山东省23日发布全球首张确定性网络,将有效解决传统网络数据传输上的拥塞延迟抖动等痛点,实现新一代信息技术领域重大突破。确定性网络是一种能提供确