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 Web服务器Tornado使用小结
May 06 Python
详解Python中列表和元祖的使用方法
Apr 25 Python
python实现基本进制转换的方法
Jul 11 Python
python中的lambda表达式用法详解
Jun 22 Python
python 简单的多线程链接实现代码
Aug 28 Python
Python 专题六 局部变量、全局变量global、导入模块变量
Mar 20 Python
Python常见内置高效率函数用法示例
Jul 31 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
Jun 21 Python
Python 50行爬虫抓取并处理图灵书目过程详解
Sep 20 Python
如何在Python对Excel进行读取
Jun 04 Python
Python利用pip安装tar.gz格式的离线资源包
Sep 14 Python
python时间time模块处理大全
Oct 25 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
我常用的几个类
2006/10/09 PHP
使用apache模块rewrite_module (转)
2007/02/14 PHP
php 安全过滤函数代码
2011/05/07 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
JavaScript 异步调用框架 (Part 1 - 问题 & 场景)
2009/08/03 Javascript
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
Javascript 获取链接(url)参数的方法[正则与截取字符串]
2010/02/09 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
ASP.NET中使用后端代码注册脚本 生成JQUERY-EASYUI的界面错位的解决方法
2010/06/12 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
mvc 、bootstrap 结合分布式图简单实现分页
2016/10/10 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
nodejs的路径问题的解决
2018/06/30 NodeJs
layer弹出的iframe层在执行完毕后关闭当前弹出层的方法
2018/08/17 Javascript
写一个Vue Popup组件
2019/02/25 Javascript
javascript数据类型中的一些小知识点(推荐)
2019/04/18 Javascript
详解jQuery如何实现模糊搜索
2019/05/10 jQuery
js使用文件流下载csv文件的实现方法
2019/07/15 Javascript
微信小程序实现点击空白隐藏的方法示例
2019/08/13 Javascript
微信小程序image图片加载完成监听
2019/08/31 Javascript
vue 动态表单开发方法案例详解
2019/12/02 Javascript
Vue通过配置WebSocket并实现群聊功能
2019/12/31 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
vue添加锚点,实现滚动页面时锚点添加相应的class操作
2020/08/10 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
使用Python设置tmpfs来加速项目的教程
2015/04/17 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
Python 读取串口数据,动态绘图的示例
2019/07/02 Python
美国第二大连锁书店:Books-A-Million
2017/12/28 全球购物
年底个人总结范文
2015/03/10 职场文书
python OpenCV学习笔记
2021/03/31 Python
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript