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 相关文章推荐
Python3调用微信企业号API发送文本消息代码示例
Nov 10 Python
基于python 爬虫爬到含空格的url的处理方法
May 11 Python
Python socket模块ftp传输文件过程解析
Nov 05 Python
python科学计算之narray对象用法
Nov 25 Python
Python中使用filter过滤列表的一个小技巧分享
May 02 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
May 26 Python
浅谈Tensorflow加载Vgg预训练模型的几个注意事项
May 26 Python
浅析Python 多行匹配模式
Jul 24 Python
使用python求斐波那契数列中第n个数的值示例代码
Jul 26 Python
python 发送邮件的四种方法汇总
Dec 02 Python
python 基于opencv 实现一个鼠标绘图小程序
Dec 11 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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
第七节 类的静态成员 [7]
2006/10/09 PHP
php学习笔记之 函数声明(二)
2011/06/09 PHP
Codeigniter注册登录代码示例
2014/06/12 PHP
Thinkphp5.0 框架的请求方式与响应方式分析
2019/10/14 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
PHP中abstract(抽象)、final(最终)和static(静态)原理与用法详解
2020/06/05 PHP
可输入的下拉框
2006/06/19 Javascript
Extjs ajax同步请求时post方式参数发送方式
2009/08/05 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
javascript常用代码段搜集
2014/12/04 Javascript
JavaScript使用setInterval()函数实现简单轮询操作的方法
2015/02/02 Javascript
基于javascript实现图片滑动效果
2016/05/07 Javascript
jQuery操作iframe中js函数的方法小结
2016/07/06 Javascript
概述BootStrap中role=&quot;form&quot;及role作用角色
2016/12/08 Javascript
Javascript实现信息滚动效果
2017/05/18 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
旺旺在线客服代码 旺旺客服代码生成器
2018/01/09 Javascript
Python模拟登陆实现代码
2017/06/14 Python
Python实现字符串反转的常用方法分析【4种方法】
2017/09/30 Python
python实现读Excel写入.txt的方法
2018/04/29 Python
Python 实现取矩阵的部分列,保存为一个新的矩阵方法
2018/11/14 Python
django中cookiecutter的使用教程
2020/12/03 Python
台湾百利市购物中心:e-Payless
2017/08/16 全球购物
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
美国正版电视节目和电影在线观看:Hulu
2018/05/24 全球购物
PHP面试题大全
2015/10/16 面试题
请解释接口的显式实现有什么意义
2012/05/26 面试题
心理健康教育制度
2014/01/27 职场文书
保密承诺书范文
2014/03/27 职场文书
2014年度思想工作总结
2014/11/27 职场文书
嘉宾邀请函
2015/01/31 职场文书
办公室主任岗位职责
2015/01/31 职场文书
2015年护士节活动总结
2015/02/10 职场文书
学校运动会开幕词
2016/03/03 职场文书
你知道哪几种MYSQL的连接查询
2021/06/03 MySQL