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 cookielib 登录人人网的实现代码
Dec 19 Python
Python标准库inspect的具体使用方法
Dec 06 Python
tensorflow学习教程之文本分类详析
Aug 07 Python
Django模板导入母版继承和自定义返回Html片段过程解析
Sep 18 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
pytorch中的卷积和池化计算方式详解
Jan 03 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
Python3开发环境搭建详细教程
Jun 18 Python
python实现图像外边界跟踪操作
Jul 13 Python
Python读写压缩文件的方法
Jul 30 Python
python+selenium自动化实战携带cookies模拟登陆微博
Jan 19 Python
解决Pytorch dataloader时报错每个tensor维度不一样的问题
May 28 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开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
超详细的php用户注册页面填写信息完整实例(附源码)
2015/11/17 PHP
php实现文件上传及头像预览功能
2017/01/15 PHP
PHP机器学习库php-ml的简单测试和使用方法
2017/07/14 PHP
php curl操作API接口类完整示例
2019/05/21 PHP
Laravel如何实现适合Api的异常处理响应格式
2020/06/14 PHP
Web层改进II-用xmlhttp 无声息提交复杂表单
2007/01/22 Javascript
Jquery乱码的一次解决过程 图解教程
2010/02/20 Javascript
JS Pro-深入面向对象的程序设计之继承的详解
2013/05/07 Javascript
你所未知的3种Node.js代码优化方式
2016/02/25 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
微信js-sdk分享功能接口常用逻辑封装示例
2016/10/13 Javascript
jQuery 开发之EasyUI 添加数据的实例
2017/09/26 jQuery
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
微信小程序实现打卡日历功能
2020/09/21 Javascript
基于js Canvas实现二次贝塞尔曲线
2018/12/25 Javascript
elementUI同一页面展示多个Dialog的实现
2020/11/19 Javascript
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
2013/11/27 Python
Python实现合并字典的方法
2015/07/07 Python
Python中with及contextlib的用法详解
2017/06/08 Python
对python3 urllib包与http包的使用详解
2018/05/10 Python
Python操作json的方法实例分析
2018/12/06 Python
set在python里的含义和用法
2019/06/24 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
使用python实现时间序列白噪声检验方式
2020/06/03 Python
高级技校毕业生自荐信
2013/11/18 职场文书
外贸业务员求职信范文
2013/12/12 职场文书
采购部主管岗位职责
2014/01/01 职场文书
乡镇党员干部四风对照检查材料思想汇报
2014/09/27 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
2016年共产党员个人承诺书
2016/03/24 职场文书
高中议论文(范文2篇)
2019/08/19 职场文书
七年级作文之《我和我的祖国》观后感作文
2019/10/18 职场文书
导游词之徐州云龙湖
2019/11/19 职场文书
2020年基层司法所建设情况调研报告
2019/11/30 职场文书
关于的python五子棋的算法
2022/05/02 Python