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创建XML文档
Mar 01 Python
python文件比较示例分享
Jan 10 Python
详解python之多进程和进程池(Processing库)
Jun 09 Python
Python3.5.3下配置opencv3.2.0的操作方法
Apr 02 Python
Python Unittest自动化单元测试框架详解
Apr 04 Python
Python requests模块实例用法
Feb 11 Python
PyQt5实现简单数据标注工具
Mar 18 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
Python实现图片添加文字
Nov 26 Python
python中property和setter装饰器用法
Dec 19 Python
Python基于字典实现switch case函数调用
Jul 22 Python
详解Go语言运用广度优先搜索走迷宫
Jun 23 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
通过5个php实例细致说明传值与传引用的区别
2012/08/08 PHP
php实现邮件发送并带有附件
2014/01/24 PHP
PHP抓取远程图片(含不带后缀的)教程详解
2016/10/21 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
laravel配置Redis多个库的实现方法
2019/04/10 PHP
PHP实现限制域名访问的实现代码(本地验证)
2020/09/13 PHP
JavaScript 自动完成脚本整理(33个)
2009/10/20 Javascript
javascript 三种编解码方式
2010/02/01 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
屏蔽IE弹出"您查看的网页正在试图关闭窗口,是否关闭此窗口"的方法
2013/12/31 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
省市选择的简单实现(基于zepto.js)
2016/06/21 Javascript
浅谈javascript运算符——条件,逗号,赋值,()和void运算符
2016/07/15 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
AngularJs点击状态值改变背景色的实例
2017/12/18 Javascript
js实现一个简单的MVVM框架示例
2018/01/15 Javascript
vue实现通讯录功能
2018/07/14 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
Vuex的actions属性的具体使用
2019/04/14 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
webpack DllPlugin xxx is not defined解决办法
2019/12/13 Javascript
在vue中使用Base64转码的案例
2020/08/07 Javascript
ML神器:sklearn的快速使用及入门
2019/07/11 Python
python将数组n等分的实例
2019/12/02 Python
Python实现中值滤波去噪方式
2019/12/18 Python
浅谈HTML5新增及移除的元素
2016/06/27 HTML / CSS
HTML5中div、article、section的区别及使用介绍
2013/08/14 HTML / CSS
设计师家具购买和委托在线市场:Viyet
2016/11/16 全球购物
澳大利亚最大的在线美发和美容零售商之一:My Hair Care & Beauty
2019/08/24 全球购物
什么是继承
2013/12/07 面试题
西式婚礼证婚词
2014/01/12 职场文书
协议书与合同的区别
2014/04/18 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
初中运动会前导词
2015/07/20 职场文书
初三语文教学反思
2016/03/03 职场文书
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫