Python爬虫爬取电影票房数据及图表展示操作示例


Posted in Python onMarch 27, 2020

本文实例讲述了Python爬虫爬取电影票房数据及图表展示操作。分享给大家供大家参考,具体如下:

爬虫电影历史票房排行榜 http://www.cbooo.cn/BoxOffice/getInland?pIndex=1&t=0

  1. Python爬取历史电影票房纪录
  2. 解析Json数据
  3. 横向条形图展示
  4. 面向对象思想

导入相关库

import requests
import re
from matplotlib import pyplot as plt
from matplotlib import font_manager
import json

类代码部分

class DYOrder(object):
 #初始化
  def __init__(self,page=1):
    self.url = 'http://www.cbooo.cn/BoxOffice/getInland?pIndex={}&t=0'.format(page)
    self.headers = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}
  #请求
  def __to_request(self):
    response = requests.get(url=self.url,headers=self.headers)
    return self.__to_parse(response.content.decode('utf-8'))
  #解析
  def __to_parse(self,html):
    #返回为JSON字符串
    #首先将字符串反序列化为JSON对象
    my_json = json.loads(html)
    return my_json
  #图表展示
  def __to_show(self,data,show_type):
    x = []
    y = []
    for value in data:
      x.append(value['MovieName'])
      y.append(int(value['BoxOffice']))
    
    my_font = font_manager.FontProperties(fname='/System/Library/Fonts/PingFang.ttc',size=18)
    
    if show_type == 1:
      plt.figure(figsize=(20,8),dpi=80)
      rects = plt.bar(range(len(x)),[float(i) for i in y],width=0.5,color='red')
      plt.xticks(range(len(x)),x,fontproperties=my_font,rotation=60)
      plt.xlabel('名称',rotation=60,color='blue',fontproperties=my_font)
      plt.ylabel('票房/万',rotation=60,color='blue',fontproperties=my_font)
      for rect in rects:
        height = rect.get_height()
        plt.text(rect.get_x() + rect.get_width()/2,height+0.4,str(height),ha='center',rotation=30)
    else:
      # 横向 plt.barh(y,x)
      plt.figure(figsize=(15,13),dpi=80)
      rects = plt.barh(range(len(x)),y,height=0.8,color='orange')
      plt.yticks(range(len(x)),x,fontproperties=my_font,rotation=30)
      plt.ylabel('名称',rotation=0,color='blue',fontproperties=my_font)
      plt.xlabel('票房/万',rotation=60,color='blue',fontproperties=my_font)
      for rect in rects:
        width = rect.get_width()
        plt.text(width, rect.get_y()+0.3/2,str(width),va='center',rotation=30)
  
    plt.grid(alpha=0.4)  
    plt.title('中国电影历史票房排行榜',color='red',size=18,fontproperties=my_font)
    plt.show()
  #所有操作
  def to_run(self,show_type=1):
    result = self.__to_request()
    self.__to_show(result,show_type)

调用类并展示

if __name__ == '__main__':
  dy_order = DYOrder(1)
  # type 1 竖向条形图 2 横向
  dy_order.to_run(2)

Python爬虫爬取电影票房数据及图表展示操作示例
Python爬虫爬取电影票房数据及图表展示操作示例

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python正则表达式用法总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
用Python计算三角函数之acos()方法的使用
May 15 Python
django admin添加数据自动记录user到表中的实现方法
Jan 05 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
python实现随机漫步方法和原理
Jun 10 Python
python numpy存取文件的方式
Apr 01 Python
python画微信表情符的实例代码
Oct 09 Python
浅谈Python类中的self到底是干啥的
Nov 11 Python
调用其他python脚本文件里面的类和方法过程解析
Nov 15 Python
Pytorch 中retain_graph的用法详解
Jan 07 Python
Python如何设置指定窗口为前台活动窗口
Aug 12 Python
Django限制API访问频率常用方法解析
Oct 12 Python
关于Python中*args和**kwargs的深入理解
Aug 07 Python
Pyspark读取parquet数据过程解析
Mar 27 #Python
Python基于pyecharts实现关联图绘制
Mar 27 #Python
Python爬虫爬取杭州24时温度并展示操作示例
Mar 27 #Python
Django添加bootstrap框架时无法加载静态文件的解决方式
Mar 27 #Python
Python itertools.product方法代码实例
Mar 27 #Python
python实现图像全景拼接
Mar 27 #Python
如何在Python 游戏中模拟引力
Mar 27 #Python
You might like
PHP 在线翻译函数代码
2009/05/07 PHP
php批量上传的实现代码
2013/06/09 PHP
php实现的用户查询类实例
2015/06/18 PHP
浅谈PHP的排列组合(如输入a,b,c 输出他们的全部组合)
2017/03/14 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
Laravel框架控制器的request与response用法示例
2019/09/30 PHP
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
JS获取IP、MAC和主机名的五种方法
2013/11/14 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
利用Bootstrap实现表格复选框checkbox全选
2016/12/21 Javascript
JS动态生成年份和月份实例代码
2017/02/04 Javascript
微信小程序中页面FOR循环和嵌套循环
2017/06/21 Javascript
jquery实现用户登陆界面(示例讲解)
2017/09/06 jQuery
js中bool值的转换及“&&”、“||”、 “!!”详解
2017/12/21 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
微信小程序实现bindtap等事件传参
2019/04/08 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
Vue使用lodop实现打印小结
2019/07/06 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
使用Python获取Linux系统的各种信息
2014/07/10 Python
python执行使用shell命令方法分享
2017/11/08 Python
python 字符串只保留汉字的方法
2018/11/16 Python
Python的条件锁与事件共享详解
2019/09/12 Python
详解Python3中的 input() 函数
2020/03/18 Python
python爬虫 requests-html的使用
2020/11/30 Python
Python使用pyenv实现多环境管理
2021/02/05 Python
工程现场管理求职自荐信
2013/10/02 职场文书
服务质量承诺书
2014/03/27 职场文书
具结保证书
2015/01/17 职场文书
学生逃课万能检讨书2000字
2015/02/17 职场文书
交通事故起诉书
2015/05/19 职场文书
《小乌鸦爱妈妈》教学反思
2016/02/19 职场文书
导游词之铁岭象牙山
2019/12/06 职场文书