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中关于使用模块的基础知识
May 24 Python
python解析xml文件实例分析
May 27 Python
python装饰器实例大详解
Oct 25 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
使用pandas读取csv文件的指定列方法
Apr 21 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
Python3多线程版TCP端口扫描器
Aug 31 Python
Python生态圈图像格式转换问题(推荐)
Dec 02 Python
python GUI库图形界面开发之PyQt5输入对话框QInputDialog详细使用方法与实例
Feb 27 Python
Python分类测试代码实例汇总
Jul 23 Python
python爬虫scrapy框架之增量式爬虫的示例代码
Feb 26 Python
Pygame Draw绘图函数的具体使用
Nov 17 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
做个自己站内搜索引擎
2006/10/09 PHP
PHP中ob_start函数的使用说明
2013/11/11 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
PHP中TP5 上传文件的实例详解
2017/07/31 PHP
Javascript结合css实现网页换肤功能
2009/11/02 Javascript
ExtJs默认的字体大小改变的几种方法(自己整理)
2013/04/18 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
js的image onload事件使用遇到的问题
2014/07/15 Javascript
javascript中CheckBox全选终极方案
2015/05/20 Javascript
jQuery插件formValidator自定义函数扩展功能实例详解
2015/11/25 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
单击按钮发送验证码,出现倒计时的简单实例
2017/03/17 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
Vue绑定内联样式问题
2018/10/17 Javascript
详解用vue2.x版本+adminLTE开源框架搭建后台应用模版
2019/03/15 Javascript
Python 抓取动态网页内容方案详解
2014/12/25 Python
Python字符串格式化输出方法分析
2016/04/13 Python
Anaconda入门使用总结
2018/04/05 Python
Python字符串、列表、元组、字典、集合的补充实例详解
2019/12/20 Python
Python中用pyinstaller打包时的图标问题及解决方法
2020/02/17 Python
Python GUI编程学习笔记之tkinter控件的介绍及基本使用方法详解
2020/03/30 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
JACK & JONES英国官方网站:欧洲领先的男装生产商
2017/09/27 全球购物
环境工程专业自荐信
2014/03/03 职场文书
幼儿园优秀班主任事迹材料
2014/05/14 职场文书
建筑工地宣传标语
2014/06/18 职场文书
党支部班子“四风”问题自我剖析材料
2014/09/28 职场文书
2014年体育部工作总结
2014/11/13 职场文书
工程部岗位职责
2015/02/10 职场文书
内勤岗位职责
2015/02/10 职场文书
大学生学年个人总结
2015/02/15 职场文书
上市公司财务总监岗位职责
2015/04/03 职场文书
Python torch.flatten()函数案例详解
2021/08/30 Python
python字符串拼接.join()和拆分.split()详解
2021/11/23 Python
python机器学习实现oneR算法(以鸢尾data为例)
2022/03/03 Python