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操作Mysql实例代码教程在线版(查询手册)
Feb 18 Python
django定期执行任务(实例讲解)
Nov 03 Python
使用Python在Windows下获取USB PID&VID的方法
Jul 02 Python
python中for循环变量作用域及用法详解
Nov 05 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
详解Python 重学requests发起请求的基本方式
Feb 07 Python
基于matplotlib xticks用法详解
Apr 16 Python
Python logging模块写入中文出现乱码
May 21 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
matplotlib基础绘图命令之imshow的使用
Aug 13 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
Jan 06 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数据库操作类
2008/06/04 PHP
PHP5.3.1 不再支持ISAPI
2010/01/08 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
php表单处理操作
2017/11/16 PHP
THINKPHP5分页数据对象处理过程解析
2020/10/28 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
form表单只提交数据而不进行页面跳转的解决方案
2013/09/18 Javascript
js实现在字符串中提取数字
2013/11/05 Javascript
浅析Node.js中的内存泄漏问题
2015/06/23 Javascript
手机端转盘抽奖代码分享
2015/09/10 Javascript
自己封装的一个简单的倒计时功能实例
2016/11/23 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
详解vue axios用post提交的数据格式
2018/08/07 Javascript
vue输入框使用模糊搜索功能的实现代码
2020/05/26 Javascript
[05:39]2014DOTA2西雅图国际邀请赛 淘汰赛7月14日TOPPLAY
2014/07/14 DOTA
tensorflow: variable的值与variable.read_value()的值区别详解
2018/07/30 Python
Python爬虫实战之12306抢票开源
2019/01/24 Python
Python Pandas数据结构简单介绍
2019/07/03 Python
python如何将多个PDF进行合并
2019/08/13 Python
Python3实现mysql连接和数据框的形成(实例代码)
2020/01/17 Python
如何用Anaconda搭建虚拟环境并创建Django项目
2020/08/02 Python
python按照list中字典的某key去重的示例代码
2020/10/13 Python
Python中return函数返回值实例用法
2020/11/19 Python
英国最大的独立家具零售商:Furniture Village
2016/09/06 全球购物
领先的英国注册在线药房 :Simply Meds Online
2019/03/28 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
卫校护理专业毕业生求职信
2013/11/26 职场文书
缅怀先烈演讲稿
2014/09/03 职场文书
校园主题婚礼活动策划方案
2014/09/15 职场文书
党的群众路线教育实践活动党员个人剖析材料
2014/10/08 职场文书
狮子林导游词
2015/02/03 职场文书
公司借条范本
2015/05/25 职场文书
详解nginx进程锁的实现
2021/06/14 Servers
mysql 数据插入优化方法之concurrent_insert
2021/07/01 MySQL
使用jpa之动态插入与修改(重写save)
2021/11/23 Java/Android
【DOTA2】半决赛强强对话~ PSG LGD vs EHOME - DPC 2022 CN REGIONAL FINALS WINTER
2022/04/02 DOTA