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编程模板汇总
Feb 12 Python
AI人工智能 Python实现人机对话
Nov 13 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
Python numpy.array()生成相同元素数组的示例
Nov 12 Python
Django之模型层多表操作的实现
Jan 08 Python
python快排算法详解
Mar 04 Python
python nmap实现端口扫描器教程
May 28 Python
python实现七段数码管和倒计时效果
Nov 23 Python
解决Keras 与 Tensorflow 版本之间的兼容性问题
Feb 07 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 Python
Python selenium如何打包静态网页并下载
Aug 12 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
php学习之流程控制实现代码
2011/06/09 PHP
解析link_mysql的php版
2013/06/30 PHP
PHP+redis实现的购物车单例类示例
2019/02/02 PHP
PHP INT类型在内存中占字节详解
2019/07/20 PHP
PhpStorm+xdebug+postman调试技巧分享
2020/09/15 PHP
IE与FireFox的兼容性问题分析
2007/04/22 Javascript
javascript下查找父节点的简单方法
2007/08/13 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
javascript通过className来获取元素的简单示例代码
2014/01/10 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
用html5 js实现点击一个按钮达到浏览器全屏效果
2014/05/28 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
微信小程序 登录实例详解
2017/01/16 Javascript
基于JavaScript实现购物车功能
2017/02/07 Javascript
详解windows下vue-cli及webpack 构建网站(二)导入bootstrap样式
2017/06/17 Javascript
vue.js全局API之nextTick全面解析
2017/07/07 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
js中的reduce()函数讲解
2019/01/18 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
[00:53]2015国际邀请赛 中国区预选赛一触即发
2015/05/14 DOTA
Django中几种重定向方法
2015/04/28 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
举例讲解Python的lambda语句声明匿名函数的用法
2016/07/01 Python
numpy中的delete删除数组整行和整列的实例
2018/05/09 Python
pytorch梯度剪裁方式
2020/02/04 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
建房协议书
2014/04/11 职场文书
竞选生活委员演讲稿
2014/04/28 职场文书
商务英语专业求职信
2014/06/26 职场文书
杭白菊导游词
2015/02/10 职场文书
加薪通知
2015/04/25 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书