自动化上传数据(一)
最近负责网站商品的内容管理,每月都需要把大量数据上传到网站上,这种重复的劳动适合交给机器去做,于是我默默的开始了自动化上传脚本的编写:
这里先介绍一下此脚本的几个主角,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处理类弄完了