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使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
Dec 12 Python
python+opencv实现动态物体识别
Jan 09 Python
python中实现字符串翻转的方法
Jul 11 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
使用Python轻松完成垃圾分类(基于图像识别)
Jul 09 Python
Python 将json序列化后的字符串转换成字典(推荐)
Jan 06 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python如何实现邮件功能
May 27 Python
基于python实现删除指定文件类型
Jul 21 Python
Python 3.9的到来到底是意味着什么
Oct 14 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 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
Windows下IIS6/Apache2.2.4+MySQL5.2+PHP5.2.1安装配置方法
2007/05/03 PHP
PHP curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
php 阴历-农历-转换类代码
2012/01/16 PHP
thinkphp 手机号和用户名同时登录
2017/01/20 PHP
PHP数据源架构模式之表入口模式实例分析
2020/01/23 PHP
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
jquery ajax return没有返回值的解决方法
2011/10/20 Javascript
JS数组array元素的添加和删除方法代码实例
2015/06/01 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
JavaScript中的this机制
2016/01/30 Javascript
AngularJS基础 ng-focus 指令简单示例
2016/08/01 Javascript
fullCalendar中文API官方文档
2017/02/07 Javascript
js实现数组去重方法及效率?Ρ? target=
2017/02/14 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
Vue.js+Layer表格数据绑定与实现更新的实例
2018/03/07 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
[01:06] DOTA2英雄背景故事第三期之秩序法则光之守卫
2020/07/07 DOTA
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
Python中函数的返回值示例浅析
2019/08/28 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
一款纯css3实现的圆形旋转分享按钮旋转角度可自己调整
2014/09/02 HTML / CSS
css3进阶之less实现星空动画的示例代码
2019/09/10 HTML / CSS
Lululemon加拿大官网:加拿大知名体育服装零售商
2019/04/12 全球购物
Urban Decay官方网站:美国化妆品品牌
2020/06/04 全球购物
全球最大运动品牌的男装、女装和童装官方库存商:A&A Sports
2021/01/17 全球购物
自我评价的写作规则
2014/01/06 职场文书
21岁生日感言
2014/02/27 职场文书
项目合作协议书
2014/09/23 职场文书
2015年初中元旦晚会活动总结
2014/11/28 职场文书
五年级下册复习计划
2015/01/19 职场文书
放射科岗位职责
2015/02/14 职场文书
我在伊朗长大观后感
2015/06/16 职场文书
铁人观后感
2015/06/16 职场文书
2016年小学圣诞节活动总结
2016/03/31 职场文书
nginx处理http请求实现过程解析
2021/03/31 Servers