将爬取的数据保存到Excel表格
1、普通函数方法版将爬取的数据保存到excel表格 , 数据会比较直观。下面以保存python的关键词为例,介绍将数据保存到excel的详细流程。第一步、导入模块import xlwt# 导入写入excel需要的包第二步、定义函数,将爬取好的数据保存到excel文件中。def write_to_excel(filename, lst):# 为防止写入失败,捕获异常...
·
1、普通函数方法版
将爬取的数据保存到excel表格 , 数据会比较直观。下面以保存python的关键词为例,介绍将数据保存到excel的详细流程。
第一步、导入模块
import xlwt # 导入写入excel需要的包
第二步、定义函数,将爬取好的数据保存到excel文件中。
def write_to_excel(filename, lst):
# 为防止写入失败,捕获异常
try:
# 1 创建一个workbook,相当于创建excel文件
work_book = xlwt.Workbook(encoding='utf-8')
# 2 创建一个sheet表单
sheet = work_book.add_sheet('python_word') # python_word 为表的名字
# 3,写表头
heads = ['英文', '中文']
for i in range(len(heads)):
sheet.write(0, i, heads[i]) # write(行,列,内容) 行,列都是默认 0 开始
# 4,写入内容
j = 1 # 从第二行开始
for item in lst:
sheet.write(j, 0, item['en']) # 第二行,第一列
sheet.write(j, 1, item['zh']) # 第二行,第二列
j += 1
# 5,保存文件
work_book.save(filename)
print('写入成功')
except Exception:
print('写入失败')
第三步、传入文件名、爬取的列表格式数据两个实参,调用函数,大功告成。
2、升级版,封装成模块
工作中,由于我们爬取的数据量时非常庞大的,将爬取的数据全部先保存到列表后,再写入excel,由于列表的底层结构是基于数组实现的,一旦存储的数据非常大的时候,写入的性能会受到影响。所以等列表储存到一定量的数据后,先写入到excel,再清空列表,保证列表的写入效率。所以在定义方法时,可以定义首次写入和追加写入两种方法。
爬取好的数据要保存到excel中,可以直接调用定义好的类方法,传入文件名和数据列表两个参数,就可以保存到excel中。还可以将该脚本封装成包模块(有__init__.py)文件,放到自己的python解释器安装的目录下的\Lib\site-packages目录下(C:\Anaconda3\Lib\site-packages),就可以作为内置模块使用,导入方式:from excel_utils.excel_utils import Excel_util
# 下载安装 pip install xlutils
from xlutils.copy import copy
import xlwt
import xlrd
class Excel_util(object):
# 首次写入方法
@staticmethod # 就可以不需要实例化,直接类名.方法名,就可以调用方法
def write_to_excel(path, info_list):
'''
:param path: xls文件路径
:param info_list: [item1,item]item{}
:return:
'''
# 创建workbook
workbook = xlwt.Workbook(encoding='utf-8')
# 创建sheet
sheet = workbook.add_sheet('parse_data')
# 写表头
heads = [key for key in info_list[0].keys()] # 遍历出字典中的key
print(heads)
for i in range(len(heads)):
sheet.write(0,i,heads[i])
j = 1
for item in info_list:
# print(item) # 是字典,使用枚举enumerate可以同时获得索引,键和值
for r,key in enumerate(item.keys()):
sheet.write(j,r,item[key])
j += 1
workbook.save(path)
print('第一次写入成功!')
# 后续追加写入的方法
@staticmethod
def write_to_excel_append(path, info_list):
workbook = xlrd.open_workbook(path) # 打开工作簿
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) # 获取转化后工作簿中的第一个表格
i = rows_old
# print(i)
for item in info_list:
for j, key in enumerate(item.keys()):
new_worksheet.write(i, j, item[key])
i += 1
new_workbook.save(path) # 保存工作簿
print("追加写入成功!")
更多推荐



所有评论(0)