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判断字符串是否纯数字的方法
Nov 19 Python
在Django的模型中添加自定义方法的示例
Jul 21 Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 Python
基于python中theano库的线性回归
Aug 31 Python
一文了解Python并发编程的工程实现方法
May 31 Python
使用python分析统计自己微信朋友的信息
Jul 19 Python
python RC4加密操作示例【测试可用】
Sep 26 Python
python ubplot使用方法解析
Jan 10 Python
Pytorch 实现数据集自定义读取
Jan 18 Python
python基本算法之实现归并排序(Merge sort)
Sep 01 Python
Python在线和离线安装第三方库的方法
Oct 31 Python
Python 发送SMTP邮件的简单教程
Jun 24 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服务器实现多session并发运行
2006/10/09 PHP
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
php实现的AES加密类定义与用法示例
2018/01/29 PHP
让您的菜单不离网站
2006/10/03 Javascript
Javascript 类型转换方法
2010/10/24 Javascript
jQuery常见开发技巧详细整理
2013/01/02 Javascript
window resize和scroll事件的基本优化思路
2014/04/29 Javascript
node.js中的fs.fstat方法使用说明
2014/12/15 Javascript
jQuery中click事件的定义和用法
2014/12/20 Javascript
JavaScript保存并运算页面中数字类型变量的写法
2015/07/06 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
javascript实现checkbox复选框实例代码
2016/01/10 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
JavaScript编程设计模式之观察者模式(Observer Pattern)实例详解
2017/10/25 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
webpack+vue2构建vue项目骨架的方法
2018/01/09 Javascript
js获取对象,数组所有属性键值(key)和对应值(value)的方法示例
2019/06/19 Javascript
Angular封装表单控件及思想总结
2019/12/11 Javascript
JS寄快递地址智能解析的实现代码
2020/07/16 Javascript
vue v-on:click传递动态参数的步骤
2020/09/11 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Python 循环语句之 while,for语句详解
2018/04/23 Python
python把转列表为集合的方法
2019/06/28 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
pytorch 固定部分参数训练的方法
2019/08/17 Python
python实现高斯(Gauss)迭代法的例子
2019/11/20 Python
python实现局域网内实时通信代码
2019/12/22 Python
python logging 日志的级别调整方式
2020/02/21 Python
Python通过socketserver处理多个链接
2020/03/18 Python
amazeui页面分析之登录页面的示例代码
2020/08/25 HTML / CSS
纽约JewelryAffairs珠宝店:精细金银时尚首饰
2017/02/05 全球购物
出生医学证明样本
2014/01/17 职场文书
中秋寄语大全
2014/04/11 职场文书
2015小学教师德育工作总结
2015/05/12 职场文书
Go并发4种方法简明讲解
2022/04/06 Golang