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时间模块datetime、time、calendar的使用方法
Jan 13 Python
Python PyQt5实现的简易计算器功能示例
Aug 23 Python
python+opencv轮廓检测代码解析
Jan 05 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
python最长回文串算法
Jun 04 Python
Python实现的统计文章单词次数功能示例
Jul 08 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
Python学习笔记之While循环用法分析
Aug 14 Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
python实现超级马里奥
Mar 18 Python
教你使用TensorFlow2识别验证码
Jun 11 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出错界面
2006/10/09 PHP
linux实现php定时执行cron任务详解
2013/12/24 PHP
php缓冲 output_buffering和ob_start使用介绍
2014/01/30 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
不用锚点也可以平滑滚动到页面的指定位置实现代码
2013/05/08 Javascript
JS正则验证邮箱的格式详细介绍
2013/11/19 Javascript
解决jquery实现的radio重新选中的问题
2015/07/03 Javascript
angularjs自定义ng-model标签的属性
2016/01/21 Javascript
Jquery on方法绑定事件后执行多次的解决方法
2016/06/02 Javascript
Select下拉框模糊查询功能实现代码
2016/07/22 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
详解jQuery插件开发方式
2016/11/22 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
jquery实现全选、全不选以及单选功能
2017/03/23 jQuery
vue实现商城上货组件简易版
2017/11/27 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
Vue-cli项目获取本地json文件数据的实例
2018/03/07 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
vue在index.html中引入静态文件不生效问题及解决方法
2019/04/29 Javascript
微信小程序使用websocket通讯的demo,含前后端代码,亲测可用
2019/05/22 Javascript
详谈vue中router-link和传统a链接的区别
2020/07/22 Javascript
vue+vant 上传图片需要注意的地方
2021/01/03 Vue.js
pygame播放音乐的方法
2015/05/19 Python
python爬虫爬取网页表格数据
2018/03/07 Python
django 修改server端口号的方法
2018/05/14 Python
python Tkinter版学生管理系统
2019/02/20 Python
Python Numpy计算各类距离的方法
2019/07/05 Python
python 基于opencv实现高斯平滑
2020/12/18 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
全球最大的生存食品、水和装备专用在线市场:BePrepared.com
2020/01/02 全球购物
金融专业推荐信
2013/11/14 职场文书
主题婚礼策划方案
2014/02/10 职场文书
小学班长竞选演讲稿
2014/04/24 职场文书
mysql对于模糊查询like的一些汇总
2021/05/09 MySQL
「地球外少年少女」BD发售宣传CM公开
2022/03/21 日漫
MySQL sql模式设置引起的问题
2022/05/15 MySQL