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中使用item()方法遍历字典的例子
Aug 26 Python
Python二叉树的定义及常用遍历算法分析
Nov 24 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
python面向对象多线程爬虫爬取搜狐页面的实例代码
May 31 Python
python 实现selenium断言和验证的方法
Feb 13 Python
python实现电子书翻页小程序
Jul 23 Python
django框架cookie和session用法实例详解
Dec 10 Python
python3利用Axes3D库画3D模型图
Mar 25 Python
python else语句在循环中的运用详解
Jul 06 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
python实现不同数据库间数据同步功能
Feb 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
php empty函数判断mysql表单是否为空
2010/04/12 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
PHP动态规划解决0-1背包问题实例分析
2015/03/23 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
PHP preg_match实现正则表达式匹配功能【输出是否匹配及匹配值】
2017/07/19 PHP
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
JS获取浏览器语言动态加载JS文件示例代码
2014/10/31 Javascript
JavaScript 对象深入学习总结(经典)
2015/09/29 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
完美解决input[type=number]无法显示非数字字符的问题
2017/02/28 Javascript
使用store来优化React组件的方法
2017/10/23 Javascript
js 公式编辑器 - 自定义匹配规则 - 带提示下拉框 - 动态获取光标像素坐标
2018/01/04 Javascript
vue源码学习之Object.defineProperty 对数组监听
2018/05/30 Javascript
vue.js层叠轮播效果的实例代码
2018/11/08 Javascript
vue动态绑定class的几种常用方式小结
2019/05/21 Javascript
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
pandas中Timestamp类用法详解
2017/12/11 Python
python 剪切移动文件的实现代码
2018/08/02 Python
Python中文件的写入读取以及附加文字方法
2019/01/23 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
python 函数中的内置函数及用法详解
2019/07/02 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
python如何构建mock接口服务
2021/01/28 Python
HTML5各种头部meta标签的功能(推荐)
2017/03/13 HTML / CSS
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
英国复古服装购物网站:Collectif
2019/10/30 全球购物
adidas泰国官网:adidas TH
2020/07/11 全球购物
新闻系毕业生推荐信
2013/11/16 职场文书
团队拓展训练感想
2015/08/07 职场文书
浅谈Python响应式类库RxPy
2021/06/14 Python
JavaScript流程控制(循环)
2021/12/06 Javascript
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技