一名前端工作人员的python爬虫实践记录【6】--用xlwt库进行数据存储【上】

215 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第7天,点击查看活动详情

前文回顾

一名前端工作人员的python爬虫实践记录【1】——通过urllib封装请求

一名前端工作人员的python爬虫实践记录【2】---BeautifulSoup

一名前端工作人员的python爬虫实践记录【3】--用正则表达式匹配html文档【上】

一名前端工作人员的python爬虫实践记录【4】--用正则表达式匹配html文档【中】

一名前端工作人员的python爬虫实践记录【5】--用正则表达式匹配html文档【下】

书接上文

在前面的文章里,我们把爬虫的编写思路分为了三个部分,我们在这里回忆一下,那就是:

  • 爬取网页
  • 解析数据
  • 保存数据

我们已经完成了第一部分和第二部分了,接下来就是第三部分,保存数据了。

简叙思路

在保存数据这一块,我们将使用两种方法去保存数据,一是保存在Excel工作簿之中,另一个方法是结合MongoDB保存在数据库之中。

保存在Excel工作簿

在我们的日常工作中,通常数据爬取后,为了让不熟悉编程的同事们更方便地获取数据,因此通常会在Excel表内将我们爬取到的数据进行保存。
下面将介绍python里将数据保存到Excel的库Xlwt

Xlwt库

什么是xlwt?

xlwt是一个供开发人员用于生成与 Microsoft Excel 版本 95 至 2003 兼容的电子表格文件的库。

包本身是纯 Python,不依赖于标准 Python发行版之外的模块或包。

如何使用xlwt并且封装

简述思路

  • 封装方法:

    • 封装一个 mybook 的函数 输入参数 sheetnamelist headrow datalist 根据数据写列表
      • sheetnamelist:一个字符串就好了 只用作定义 sheet 的名称
      • headrow :一个定义首行字段的数组
      • datalist:一个二维数组 包含爬取的数据 不包含第一行的题头
    • 封装一个 save 方法 输入参数 savepath 保存工作簿

mybook函数的实现

首先肯定是导入包啦,然后将book对象全局声明

import xlwt
global book

为什么要全局声明呢,因为workbook和save的方法都要操作book对象。但是如果为了更好的封装其实可以尝试一下单例模式。

然后定义函数mybook

def mybook(headrow:list,sheetname: str, datalist: list):
   book = xlwt.Workbook()
   sheet = book.add_sheet(sheetname)

book相当于是一个Excel工作簿,而sheet是工作簿里的某一个工作表

然后在首行加上每一列的数据名称,在第二行开始,写入我们爬取的数据

l = len(datalist)
    for i in range(len(headrow)):
        sheet.write(0,i,headrow[i])
    for row in range(l):
        for col in range(len(datalist[row])):
            sheet.write(row+1,col,datalist[row][col])#从第二行开始写

这就是mybook函数的实现 ,主要是创建一个工作簿的对象,用于存储工作表。

save方法的实现

xlwtsave方法:

save(*filename_or_stream*)

文件名或流– 这可以是包含文件文件名的字符串,在这种情况下,excel 文件使用提供的名称保存到磁盘。它也可以是带有 write 方法的流对象,例如 一个 [StringIO]对象,在这种情况下,excel文件的数据将写入流中。

def savemybook(savepath: str):
    global book
    book.save(savepath)

下期预告

至此,我们的xlwt函数就封装完成了,接下来就调用了,该怎么调用呢?
我们下期再见!

我是短袖撸码蒂尔尼
一名热爱阿森纳的前端工程师
如果本文对您有帮助,可以给一个免费的赞吗?谢谢!

名片.jpg