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中文编码那些事
Jun 25 Python
Python3 Random模块代码详解
Dec 04 Python
Python无损音乐搜索引擎实现代码
Feb 02 Python
用Python实现BP神经网络(附代码)
Jul 10 Python
python图片二值化提高识别率代码实例
Aug 24 Python
numpy np.newaxis 的实用分享
Nov 30 Python
Python面向对象封装操作案例详解 II
Jan 02 Python
Python脚本打包成可执行文件过程解析
Oct 20 Python
celery在python爬虫中定时操作实例讲解
Nov 27 Python
Python入门之使用pandas分析excel数据
May 12 Python
Python中字符串对象语法分享
Feb 24 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 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中Cannot send session cache limiter 的问题的方法
2007/04/27 PHP
php db类库进行数据库操作
2009/03/19 PHP
php调用google接口生成二维码示例
2014/04/28 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
PHP日期和时间函数的使用示例详解
2020/08/06 PHP
javascript五图轮播切换实用版
2012/08/17 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
jQuery中$.click()无效问题分析
2015/01/29 Javascript
js为什么不能正确处理小数运算?
2015/12/29 Javascript
JavaScript Ajax编程 应用篇
2016/07/02 Javascript
js HTML5 Canvas绘制转盘抽奖
2020/09/13 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
面包屑导航详解
2017/12/07 Javascript
javascript实现获取一个日期段内每天不同的价格(计算入住总价格)
2018/02/05 Javascript
详解react、redux、react-redux之间的关系
2018/04/11 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
vue实现移动端图片上传功能
2019/12/23 Javascript
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
Vue微信公众号网页分享的示例代码
2020/05/28 Javascript
react ant Design手动设置表单的值操作
2020/10/31 Javascript
深入解析Python编程中JSON模块的使用
2015/10/15 Python
python操作文件的参数整理
2019/06/11 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
python关于调用函数外的变量实例
2019/12/26 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
英国游戏机和游戏购物网站:365games.co.uk
2018/06/18 全球购物
小学防溺水制度
2014/01/29 职场文书
创新社会管理心得体会
2014/09/12 职场文书
领导班子四风问题对照检查材料
2014/09/27 职场文书
官僚主义现象查摆问题整改措施
2014/10/04 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
房屋产权证明书
2015/06/19 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
家庭聚会祝酒词
2015/08/11 职场文书