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中unittest实现简单的单元测试实例详解
Jan 09 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
基于Pandas读取csv文件Error的总结
Jun 15 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 Python
对Python 简单串口收发GUI界面的实例详解
Jun 12 Python
python解析xml简单示例
Jun 21 Python
Python 3.6 中使用pdfminer解析pdf文件的实现
Sep 25 Python
python实现批量处理将图片粘贴到另一张图片上并保存
Dec 12 Python
Keras SGD 随机梯度下降优化器参数设置方式
Jun 19 Python
Python基于内置函数type创建新类型
Oct 22 Python
Django实现聊天机器人
May 31 Python
virtualenv隔离Python环境的问题解析
Jun 21 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
在线增减.htpasswd内的用户
2006/10/09 PHP
php下实现伪 url 的超简单方法[转]
2007/09/24 PHP
codeigniter中实现一次性加载多个view的方法
2015/03/20 PHP
php版微信数据统计接口用法示例
2016/10/12 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
yii2安装详细流程
2018/05/23 PHP
关于jquery css的使用介绍
2013/04/18 Javascript
JS写的贪吃蛇游戏(个人练习)
2013/07/08 Javascript
JS获取当前日期和时间的简单实例
2013/11/19 Javascript
jQuery学习笔记之jQuery构建函数的7种方法
2014/06/03 Javascript
javascript使用正则获取url上的某个参数
2014/09/04 Javascript
jQuery的end()方法使用详解
2015/07/15 Javascript
基于BootstrapValidator的Form表单验证(24)
2016/12/12 Javascript
原生js实现倒计时--2018
2017/02/21 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
原生JS实现Ajax跨域请求flask响应内容
2017/10/24 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
JavaScript实现新年倒计时效果
2018/11/17 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
亲自动手实现vue日历控件
2019/06/26 Javascript
js中console在一行内打印字符串和对象的方法
2019/09/10 Javascript
vue.js实现简单的计算器功能
2020/02/22 Javascript
0基础学习前端开发的一些建议
2020/07/14 Javascript
centos6.4下python3.6.1安装教程
2017/07/21 Python
Python常见字符串操作函数小结【split()、join()、strip()】
2018/02/02 Python
PyQt5的PyQtGraph实践系列3之实时数据更新绘制图形
2019/05/13 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
python word转pdf代码实例
2019/08/16 Python
python 实现矩阵填充0的例子
2019/11/29 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
办理护照介绍信
2014/01/16 职场文书
科级干部考察材料
2014/02/15 职场文书
暑期培训随笔感言
2014/03/10 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
副检察长四风问题对照检查材料思想汇报
2014/10/07 职场文书