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中__new__与__init__方法的区别详解
May 04 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
Dec 20 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
python使用KNN算法手写体识别
Feb 01 Python
python创建文件备份的脚本
Sep 11 Python
Python使用requests提交HTTP表单的方法
Dec 26 Python
wxpython布局的实现方法
Nov 01 Python
python实现QQ邮箱发送邮件
Mar 06 Python
django配置app中的静态文件步骤
Mar 27 Python
Django权限设置及验证方式
May 13 Python
matplotlib常见函数之plt.rcParams、matshow的使用(坐标轴设置)
Jan 05 Python
python实战之90行代码写个猜数字游戏
Apr 22 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
Ha0k 0.3 PHP 网页木马修改版
2009/10/11 PHP
QQ登录 PHP OAuth示例代码
2011/07/20 PHP
CI框架(CodeIgniter)实现的导入、导出数据操作示例
2018/05/24 PHP
Swoole扩展的6种模式深入详解
2021/03/04 PHP
jquery高效反选具体实现
2013/05/05 Javascript
用javascript删除当前行,添加行(示例代码)
2013/11/25 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
JavaScript学习笔记之JS函数
2015/01/22 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
JavaScript中数组继承的简单示例
2015/07/29 Javascript
使用OpenLayers3 添加地图鼠标右键菜单
2015/12/29 Javascript
使用jquery获取url以及jquery获取url参数的实现方法
2016/05/25 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
Web打印解决方案之证件套打的实现思路
2016/08/29 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
2016/12/26 Javascript
jQuery实现checkbox的简单操作
2017/11/18 jQuery
关于 angularJS的一些用法
2017/11/29 Javascript
解决vue2中使用axios http请求出现的问题
2018/03/05 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
对vuejs的v-for遍历、v-bind动态改变值、v-if进行判断的实例讲解
2018/08/27 Javascript
javascript关于“时间”的一次探索
2019/07/24 Javascript
layui实现数据表格table分页功能(ajax异步)
2019/07/27 Javascript
原生js代码能实现call和bind吗
2019/07/31 Javascript
python实现删除文件与目录的方法
2014/11/10 Python
python类装饰器用法实例
2015/06/04 Python
python 把数据 json格式输出的实例代码
2016/10/31 Python
python中执行shell的两种方法总结
2017/01/10 Python
Python操作csv文件实例详解
2017/07/31 Python
手把手教你如何安装Pycharm(详细图文教程)
2018/11/28 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
Servlet如何得到客户端机器的信息
2014/10/17 面试题
金融专业大学生职业生涯规划范文
2014/01/16 职场文书
大学生感恩父母演讲稿
2014/08/28 职场文书
走群众路线学习笔记
2014/11/06 职场文书