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 多进程和数据传递的理解
Oct 09 Python
分享一下Python数据分析常用的8款工具
Apr 29 Python
Flask框架信号用法实例分析
Jul 24 Python
简单了解python的内存管理机制
Jul 08 Python
opencv实现简单人脸识别
Feb 19 Python
简单了解python数组的基本操作
Nov 26 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
PyInstaller运行原理及常用操作详解
Jun 13 Python
Python常用类型转换实现代码实例
Jul 28 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
Nov 25 Python
如何用python开发Zeroc Ice应用
Jan 29 Python
python全面解析接口返回数据
Feb 12 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
PHPlet在Windows下的安装
2006/10/09 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
Laravel 5框架学习之模型、控制器、视图基础流程
2015/04/08 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
PHP7 标准库修改
2021/03/09 PHP
js程序中美元符号$是什么
2008/06/05 Javascript
jquery 可拖拽的窗体控件实现代码
2010/03/21 Javascript
javascript中的关于类型转换的性能优化
2010/12/14 Javascript
js 实现日期灵活格式化的小例子
2013/07/14 Javascript
Javascript核心读书有感之词法结构
2015/02/01 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
纯javascript实现分页(两种方法)
2015/08/26 Javascript
Jquery+Ajax+PHP+MySQL实现分类列表管理(下)
2015/10/28 Javascript
js省市联动效果完整实例代码
2015/12/09 Javascript
jQuery实现对无序列表的排序功能(附demo源码下载)
2016/06/25 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
layui中使用jquery控制radio选中事件的示例代码
2018/08/15 jQuery
vue.js路由mode配置之去掉url上默认的#方法
2019/11/01 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
2020/09/10 Javascript
python实现在控制台输入密码不显示的方法
2015/07/02 Python
Python使用Paramiko模块编写脚本进行远程服务器操作
2016/05/05 Python
Python环境搭建之OpenCV的步骤方法
2017/10/20 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
python3.7 的新特性详解
2019/07/25 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
CSS3实战第一波 让我们尽情的圆角吧
2010/08/27 HTML / CSS
细说CSS3中box属性中的overflow-x属性和overflow-y属性值的效果
2014/07/21 HTML / CSS
党员个人思想汇报
2013/12/28 职场文书
大学生旷课检讨书
2014/01/22 职场文书
教师年度考核评语
2014/04/28 职场文书
幼师求职信
2014/06/23 职场文书
尊师重教演讲稿
2014/09/04 职场文书
本科毕业论文致谢词
2015/05/14 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python