自动化上传数据(一)

最近负责网站商品的内容管理,每月都需要把大量数据上传到网站上,这种重复的劳动适合交给机器去做,于是我默默的开始了自动化上传脚本的编写:

  这里先介绍一下此脚本的几个主角,1.python——不用多说,写小脚本的利器代码简明方便。2,selenium,python的selenium包,可以模拟我们对浏览器的操作。3,xlrd,python的xlrd包,主要负责运营提供的excel数据表的整理。4.javascript,浏览器端脚本,负责弥补selenium一些不足的地方。

  

  首先,因为要将excel表的大量数据做处理提取出来,先来封装一个简单的excelHandle类

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

import xlrd

class excelHandle:
    def __init__(self, filepath):
        self.data = xlrd.open_workbook(filepath)
        self.sheet = None

这里使用了xlrd包,filepath参数为需要处理的excel文件的路径,保存在self.data中,self.sheet用来保存excel文件要处理的表。现在写一个函数通过索引取得表:

    def open_table(self, sheetindex):
        sheet = self.data.sheet_by_index(sheetindex)
        self.sheet = sheet
        return sheet

之后获取行数及列数与单元格的值:

    def get_row_len(self):
        return self.sheet.nrows

    def get_col_len(self):
        return self.sheet.ncols

    def get_cell_value(self, row, col):
        return self.sheet.cell_value(row,col)

由于表的第一行为数据的索引,还需要获得索引:

    def get_index_name(self):
        return self.sheet.row_values(0)

由于每一行为一个数据,那么我们需要把整个表的数据按行读取出来,这里每一条数据用dict来储存,索引就是第一行的数据,然后将每条数据放到一个list中:

    def foreach_data(self):
        data = []
        data_index = self.get_index_name()
        row_len = self.get_row_len()
        col_len = self.get_col_len()
        for row in range(1,row_len):
            row_data = {}
            for key in range(col_len):
                value = self.get_cell_value(row,key)
                row_data[data_index[key]] = value
            data.append(row_data)
        return data

最后,可以单独提取某一条数据:

    def get_data(self, search_index=0):
        data = self.foreach_data()
        data = data[search_index]
        return data

如果不给出索引值,默认调出第一条数据。

好了,一个简单的excel处理类弄完了

posted @ 2016-06-17 09:47  goddessofpom  阅读(613)  评论(0编辑  收藏  举报