自动化上传数据(三)

excel处理类和上传类都已经写好,分别保存在excelHandle.py和upload.py中,最后我们需要写一个run.py去执行上传脚本。

#!/usr/bin/python
# -*- coding: utf-8 -*-

import excelHandle
import upload
import Queue
import time

def run(filepath, username, password, url):

首先引入excelHandle,upload文件,time包,以及Queue包。Queue包主要用来创建一个队列。然后run方法传递4个参数,excel文件的路径,上传的用户名,密码,以及url。

首先实例化一个队列和一个excelHandle,读取excel数据,将数据放入队列中:

    product_queue = Queue.Queue()
    #读取excel数据加入队列
    excel_handle = excelHandle.excelHandle(filepath)
    excel_sheet = excel_handle.open_table(0)

    product_data = excel_handle.foreach_data()
    product_index = excel_handle.get_index_name()
    for i in range(len(product_data)):
        product_queue.put(product_data[i])
        num = str(i)
        print "data" + num + "standby"

接下来实例化上传类,登录上传网站,并且进入上传页面:

    uploader = upload.UpProd()
    uploader.login(url,username,password)
    #显示上传按钮
    uploader.display_list()

接下来使用一个while循环,队列不为空时,将队列中一条数据从队列中拿出来进行填写,若填写成功则拿下一条,填写失败放回队列重新填写。这里利用了队列这种数据结构的先进先出的特点。然后使用create_log()方法创建日志,当队列为空结束循环,注意一下从excel拿出来的数据不一定是string类型,由于selenium的send_keys()方法不接受浮点日期等数据类型,所以还需要进行相应的转化:

    uploader = upload.UpProd()
    uploader.login(url,username,password)
    #显示上传按钮
    uploader.display_list()
    #从队列取出数据并上传
    while product_queue.empty() is not True:
        data = product_queue.get()
        proname = data[product_index[0]]
        scprice= str(data[product_index[1]])
        sc_price= str(data[product_index[2]])
        pfprice= str(data[product_index[3]])
        sjprice= str(data[product_index[4]])
        jsprice= str(data[product_index[5]])
        point= str(data[product_index[6]])
        ziti= str(data[product_index[7]])
        soldout= str(data[product_index[8]])
        views= str(data[product_index[9]])
        know= data[product_index[10]]
        detail= data[product_index[11]]
        date= data[product_index[12]]
        order = data[product_index[13]]
        shop= data[product_index[14]]
        imgpath= "C:\cspy\webtest\img\\" + proname +".jpg"
        #判断上传是否成功,若不成功,重新进入队列上传
        if uploader.up_product(proname, scprice, sc_price, pfprice, sjprice, jsprice, point, ziti, soldout, views, know, detail, date, order, shop, imgpath):
            status = 1
            print proname + "\tupload success"
        else:
            status = 0
        uploader.create_log("6.16up.txt",proname,status)
        if status == 0:
            product_queue.put(data)

        time.sleep(5)

最后关闭浏览器:

    #全部上传完成后关闭浏览器
    uploader.quit_window()
    print "upload over"

OK,这样一个run.py就写好了,最后添加一行代码

if __name__ == ‘__main__‘:
    run(r"C:\cspy\webtest\data\test.xlsx","admin","password","http://www.xxx.com/admin")

在cmd中运行run.py就可以毫不费力的上传数据了!

(cspython) C:\cspy\webtest>python run.py
时间: 2024-12-13 11:23:35

自动化上传数据(三)的相关文章

Amazon MWS 上传数据 (三) 提交请求

前面介绍了设置服务和构造请求,现在介绍提交请求. 上传数据,查询上传操作的工作状态,和处理上传操作返回的报告操作使用的Amazon API 分别为:SubmitFeed(),FeedSubmissionListRequest(),GetFeedSubmissionResult(). SubmitFeed()-- 提交请求,代码示例: 1 #region AmazonSubmitFeed 2 /// <summary> 3 /// 提交请求 4 /// </summary> 5 pu

Amazon MWS 上传数据 (一) 设置服务

Amazon 上传数据的流程为: 通过 SubmitFeed 操作.加密标头和所有必需的元数据(包括 FeedType 的值在内),来提交 XML 或文本型数据文件.正如亚马逊 MWS的所有提交内容一样,您还必须包括验证信息.SubmitFeed 操作可返回 FeedSubmissionId 的值,您可以使用该值,通过 GetFeedSubmissionList 操作,对上传数据状态进行定期检查. 如果亚马逊 MWS仍在处理请求,则 GetFeedSubmissionList 操作的 FeedP

_00017 Flume的体系结构介绍以及Flume入门案例(往HDFS上传数据)

博文作者:妳那伊抹微笑 个性签名:世界上最遥远的距离不是天涯,也不是海角,而是我站在妳的面前,妳却感觉不到我的存在 技术方向:hadoop,数据分析与挖掘 转载声明:可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明,谢谢合作! qq交流群:214293307  (期待与你一起学习,共同进步) # 学习前言 想学习一下Flume,网上找了好多文章基本上都说的很简单,只有一半什么的,简直就是坑爹,饿顿时怒火就上来了,学个东西真不容易,然后自己耐心的把这些零零碎碎的东西整理整理,各种

shell-scripts,FTP自动化上传脚本,可循环,直到上传成功为止

脚本功能: 通过定时计划任务运行该脚本,定期上传指定文件. 之前写了这个脚本,有时候网络不稳定的时候,总是上传失败.写了循环去传,但是苦于不知道怎样去获取FTP返回的错误状态,后来度娘到可以把ftp的运行错误日志记录写到文件中,因这个点来源于分享.因此,现在把整个脚本给分享出来,提供给大家一个思路. 通过检测这个错误日记录,并返回的状态,去循环上传指定文件,并追加脚本运行日志记录,以便于跟踪脚本运行情况. #!/bin/bash #upload gonet log to ftp_server #

Amazon MWS 上传数据 (二) 构造请求

上一篇文章提到了Amazon 上传数据有三个步骤,但是每个步骤都需要构造服务和构造请求,服务是一样的,请求各不相同:这个很容易理解,这三个步骤都需要和Amazon服务器交互,所以他们的服务构造是一样的,但是三个步骤的功能各不相同,所以他们的请求(完成的功能)也不相同. 现在先来说SubmitFeed的时候需要的请求文件,下面是请求文件的代码示例: 1 #region 构造请求 Submit Amazon信息 2 private SubmitFeedRequest GetSubmitFeedReq

IOS 网络开发NSURLSession(四)UploadTask(上传数据+图片)

原创blog,转载请注明出处 blog.csdn.net/hello_hwc 前言: UploadTask继承自DataTask.不难理解,因为UploadTask只不过在Http请求的时候,把数据放到Http Body中.所以,用UploadTask来做的事情,通常直接用DataTask也可以实现.不过,能使用封装好的API会省去很多事情,何乐而不为呢? Demo下载链接 http://download.csdn.net/detail/hello_hwc/8557791 Demo里包括了三种T

文件上传的三种方式-Java

前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践.该博客重在实践. 一.Http协议原理简介 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1.0的第六版,HTTP/1.1的规范化工作正在进行之中,而且HT

文件上传的三种模式-Java

转载自: http://www.myexception.cn/web/1935104.html 文件上传的三种方式-Java 前言:因自己负责的项目(jetty内嵌启动的SpringMvc)中需要实现文件上传,而自己对java文件上传这一块未接触过,且对 Http 协议较模糊,故这次采用渐进的方式来学习文件上传的原理与实践.该博客重在实践.   一. Http协议原理简介     HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经

iOS开发--http协议 post上传数据

NSDictionary *dic=[NSDictionary dictionaryWithObjectsAndKeys:@"123",@"longitude",@"30",@"latitude",@"上传数据",@"message",nil];    //dictionaryToNSJoson    NSError *err=nil;    NSData *jasonData=[NSJ