携手创作,共同成长!这是我参与「掘金日新计划 · 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 的函数 输入参数 sheetnamelist headrow datalist 根据数据写列表
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方法的实现
xlwt的save方法:
save(*filename_or_stream*)
文件名或流– 这可以是包含文件文件名的字符串,在这种情况下,excel 文件使用提供的名称保存到磁盘。它也可以是带有 write 方法的流对象,例如 一个 [StringIO]对象,在这种情况下,excel文件的数据将写入流中。
def savemybook(savepath: str):
global book
book.save(savepath)
下期预告
至此,我们的xlwt函数就封装完成了,接下来就调用了,该怎么调用呢?
我们下期再见!
我是短袖撸码蒂尔尼
一名热爱阿森纳的前端工程师
如果本文对您有帮助,可以给一个免费的赞吗?谢谢!