Python实现大数据收集至excel的思路详解


Posted in Python onJanuary 03, 2020

一、在工程目录中新建一个excel文件

二、使用python脚本程序将目标excel文件中的列头写入,本文省略该部分的code展示,可自行网上查询

三、以下code内容为:实现从接口获取到的数据值写入excel的整体步骤

       1、整体思路:

             (1)、根据每日调取接口的日期来作为excel文件中:列名为“收集日期”的值

             (2)、程序默认是每天会定时调取接口并获取接口的返回值并写入excel中(我使用的定时任务是:linux下的contab)

             (3)、针对接口异常未正确返回数据时,使用特殊符号如:NA代替并写入excel文件中(后期使用excel数据做分析时有用)

        2、完整代码如下:

import requests, xlrd, os, sys, urllib3
from datetime import date, timedelta
from xlutils.copy import copy
basedir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
sys.path.append(basedir)
from lib.mysqldb import mysqldb
from lib.public_methods import test_login
def collect_data():
  """test_rooms.test_kpi卡片下:adr指标值收集"""
  get_all_code_sql = 'select DISTINCT test_code from test_info WHERE open_flag = 1'
  test_code_all = mysqldb("test_data").selectsql(get_all_code_sql)
  test_code_list = []
  adr_insert_data_list = []
  yesterday = (date.today() + timedelta(days=-1)).strftime("%Y-%m-%d")
  adr_insert_data_list.append(yesterday)
  for j in range(len(test_code_all)):
    test_code_list.append(test_code_all[j]["test_code"])
  for m in range(len(test_code_list)):
    url = "https://www.baidu.com/test/api/data/query.json"
    header = {
      "Content-Type": "application/json;charset=UTF-8",
      "Cookie": str(test_login())
    }
    param = {
      "code": "test_rooms.test_kpi",
      "page": 1,
      "pageSize": 1000,
      "params": {
        "start_date_year": "2019",
        "start_date_month": "9",
        "start_date_day": "16",
        "end_date_year": "2019",
        "currency_type": "usd",
        "end_date_day": "16",
        "end_date_month": "9",
        "tests": "test_001"
      }
    }
    """替换请求参数中的开始日期"""
    param["params"]["start_date_year"] = str(yesterday).split("-")[0]
    param["params"]["start_date_month"] = str(yesterday).split("-")[1]
    param["params"]["start_date_day"] = str(yesterday).split("-")[2]
    """替换请求参数中的结束日期"""
    param["params"]["end_date_year"] = param["params"]["start_date_year"]
    param["params"]["end_date_month"] = param["params"]["start_date_month"]
    param["params"]["end_date_day"] = param["params"]["start_date_day"]
    param["params"]["tests"] = test_code_list[m]
    urllib3.disable_warnings()
    result = requests.post(url=url, headers=header, json=param, verify=False).json()
    if str(result["data"]["data"]) != "None":
      """adr指标值收集"""
      indicatorList = result["data"]["data"]["test_indicator_list"]
      test_actualorLast_Forecast = result["data"]["data"]["test_actual"]
      new_indicator_actualvalue = {}
      i = 0
      while i < len(indicatorList):
        dit = {indicatorList[i]: test_actualorLast_Forecast[i]}
        new_indicator_actualvalue.update(dit)
        i += 1
      if str(new_indicator_actualvalue["adr"]) == "--":
        adr_value_result = "NA"
        adr_insert_data_list.append(adr_value_result)
      else:
        adr_value_result = new_indicator_actualvalue["adr"]
        adr_insert_data_list.append(adr_value_result)
    else:
      adr_value_result = "NA"
      adr_insert_data_list.append(adr_value_result)
  """adr指标值数据收集入excel路径"""
  workbook = xlrd.open_workbook(basedir + "/data/collect_data_center.xls") # 打开工作簿
  sheets = workbook.sheet_names() # 获取工作簿中的所有表格
  worksheet = workbook.sheet_by_name(sheets[0]) # 获取工作簿中所有表格中的的第一个表格
  rows_old = worksheet.nrows # 获取表格中已存在的数据的行数
  new_workbook = copy(workbook) # 将xlrd对象拷贝转化为xlwt对象
  new_worksheet = new_workbook.get_sheet(0) # 获取转化后工作簿中的第一个表格
  for i in range(0, 1):
    for j in range(0, len([adr_insert_data_list][i])):
      new_worksheet.write(i + rows_old, j, [adr_insert_data_list][i][j]) # 追加写入数据,注意是从i+rows_old行开始写入
  new_workbook.save(basedir + "/data/collect_data_center.xls") # 保存工作簿
  print("adr指标值---xls格式表格【追加】写入数据成功!")

              3、从步骤2中的代码可看出代码整体分为3个部分:

                    (1)、组装接口参数;

                    (2)、调用接口将接口返回的结果集收集在list中;

                    (3)、将收集的结果写入excel中并保存;

tips:windows与linux下excel的路径格式需要区分下,以上代码中的"/data/collect_data_center.xls"为linux环境下路径

总结

以上所述是小编给大家介绍的Python实现大数据收集至excel的思路详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
python实现简单聊天应用 python群聊和点对点均实现
Sep 14 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
pandas求两个表格不相交的集合方法
Dec 08 Python
实时获取Python的print输出流方法
Jan 07 Python
详解pandas安装若干异常及解决方案总结
Jan 10 Python
Python3.5面向对象程序设计之类的继承和多态详解
Apr 24 Python
Python Collatz序列实现过程解析
Oct 12 Python
pytorch下大型数据集(大型图片)的导入方式
Jan 08 Python
Windows下实现将Pascal VOC转化为TFRecords
Feb 17 Python
简单了解django处理跨域请求最佳解决方案
Mar 25 Python
python 学习GCN图卷积神经网络
May 11 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 #Python
PyTorch的自适应池化Adaptive Pooling实例
Jan 03 #Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 #Python
pytorch AvgPool2d函数使用详解
Jan 03 #Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
Jan 03 #Python
Python基础之函数原理与应用实例详解
Jan 03 #Python
对Pytorch中Tensor的各种池化操作解析
Jan 03 #Python
You might like
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
2011/08/12 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
jQuery 注意事项 与原因分析
2009/04/24 Javascript
新增加的内容是如何将div的scrollbar自动移动最下面
2014/01/02 Javascript
Javascript排序算法之计数排序的实例
2014/04/05 Javascript
jQuery 中国省市两级联动选择附图
2014/05/14 Javascript
简单谈谈Vue 模板各类数据绑定
2016/09/25 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
Angular中使用$watch监听object属性值的变化(详解)
2017/04/24 Javascript
jquery dataTable 获取某行数据
2017/05/05 jQuery
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
Node.js搭建WEB服务器的示例代码
2018/08/15 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
javascript中一些奇葩的日期换算方法总结
2018/11/14 Javascript
js canvas实现画图、滤镜效果
2018/11/27 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
微信小程序顶部导航栏可滑动并选中放大
2019/12/05 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
Python break语句详解
2014/03/11 Python
Python的Urllib库的基本使用教程
2015/04/30 Python
Python 实现交换矩阵的行示例
2019/06/26 Python
Python上下文管理器全实例详解
2019/11/12 Python
python要安装在哪个盘
2020/06/15 Python
哪些是python中web开发框架
2020/06/17 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
应届毕业生求职信范文
2013/12/18 职场文书
《草原》教学反思
2014/02/15 职场文书
家长通知书教师评语
2014/04/17 职场文书
企业标语大全
2014/07/01 职场文书
初中数学教学随笔
2015/08/15 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
nginx部署多前端项目的几种方法
2021/05/25 Servers
python b站视频下载的五种版本
2021/05/27 Python
MySQL中的布尔值,怎么存储false或true
2021/06/04 MySQL
JS实现数组去重的11种方法总结
2022/04/04 Javascript