爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)

目录

一. 获得数据后常用的存储数据的方式 

二. csv 写入与读取

三.  Excel 写⼊与读取

四. 代码实战

总结

爬虫文章专栏


一. 获得数据后常用的存储数据的方式 

常用的存储数据的方式有两种——存储成 csv 格式文件、存储成 Excel 文件。

1.1 csv 和 Excel 的区别

  • csv 也是⼀种字符串⽂件的格式,它组织数据的语法就是在字符串之间加分隔符——⾏与⾏之间是加换⾏符,同列之间是加逗号分隔。
  • 它可以⽤任意的⽂本编辑器打开(如记事本),也可以⽤ Excel 打开,还可以通过 Excel把⽂件另存为 csv 格式(因为 Excel ⽀持 csv 格式⽂件)。

1)csv ⽂件⽤记事本打开  

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第1张图片

 2)csv ⽂件⽤ Excel 打开

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第2张图片

 注意:csv ⽂件⾥的逗号可以充当分隔同列字符串的作用;

1.2 csv 和 Excel 的优缺点  

  • csv 格式存储数据,读写⽐较⽅便,易于实现,⽂件也会⽐ Excel ⽂件⼩。但 csv ⽂件缺少Excel ⽂件本身的很多功能,⽐如不能嵌⼊图像和图表,不能⽣成公式。
  • Excel ⽂件,不⽤我多说你也知道就是电⼦表格。它有专⻔保存⽂件的格式,即 xls 和xlsx(Excel2003 版本的⽂件格式是 xls,Excel2007 及之后的版本的⽂件格式就是 xlsx)

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第3张图片

1.3 存储数据的基础知识

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第4张图片


二. csv 写入与读取

2.1 模块调用:

因为 csv 为内置函数,无需安装,即可使用;

import csv

2.2 创建 csv 文件

# 引用csv模块。
import csv

# 创建csv文件,我们要先调用open()函数,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
  • 'demo.csv' 为我们新创建的⼀个 csv 文件;
  • 'w' 就是 writer,即文件写⼊模式,它会以覆盖原内容的形式写入新添加的内容;
  • newline=' ' 参数可以避免 csv 文件出现两倍的行距(就是能避免表格的行与行之间出现空白行);
  • encoding='utf-8' 可以避免编码问题导致的报错或乱码。

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第5张图片

2.3 创建 writer 对象

# 引用csv模块。
import csv

# 调用open()函数打开csv文件,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
# 用csv.writer()函数创建一个writer对象。
writer = csv.writer(csv_file)

2.4 往 csv ⽂件写⼊新的内容

        调用 writer 对象的 writerow() ⽅法(提醒:writerow() 函数⾥,需要放⼊列表参数,所

以我们得把要写⼊的内容写成列表。就像 ['电影','⾖瓣评分']
# 引用csv模块。
import csv

# 调用open()函数打开csv文件,传入参数:文件名“demo.csv”、写入模式“w”、newline=''、encoding='utf-8'。
csv_file = open('demo.csv','w',newline='',encoding='utf-8')
# 用csv.writer()函数创建一个writer对象。
writer = csv.writer(csv_file)
# 调用writer对象的writerow()方法,可以在csv文件里写入一行文字 “电影”和“豆瓣评分”。
writer.writerow(['电影','豆瓣评分'])
# 在csv文件里写入一行文字 “银河护卫队”和“8.0”。
writer.writerow(['银河护卫队','8.0'])
# 在csv文件里写入一行文字 “复仇者联盟”和“8.1”。
writer.writerow(['复仇者联盟','8.1'])
# 写入完成后,关闭文件就大功告成啦!
csv_file.close()

 运行代码后,名为“demo.csv”的文件会被创建。用Excel或记事本打开这个文件:

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第6张图片

 补充一点:csv模块本身还有很多函数和方法,附上csv模块官方文档链接,有兴趣的朋友自取:https://yiyibooks.cn/xx/python_352/library/csv.html#module-csv

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第7张图片


三.  Excel 写⼊与读取

3.1 Excel 的基本概念

  •  ⼀个Excel⽂档也称为⼀个⼯作薄(workbook),每个⼯作薄⾥可以有多个⼯作表(wordsheet),当前打开的⼯作表又叫活动表;
  • 每个⼯作表⾥有⾏和列,特定的行与列相交的⽅格称为单元格(cell)。比如上图第A列和第1⾏相交的⽅格我们可以直接表示为A1单元格。

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第8张图片

3.2 Excel 的写⼊读写

1)模块安装:

  • window 电脑:在终端输⼊命令:pip install openpyxl,按下 enter 键;
  • mac 电脑:在终端输⼊命令:pip3 install openpyxl,按下 enter 键。

2)模块调用 :

import openpyxl

3)创建新的工作簿:

# 引用openpyxl     
import openpyxl 

# 利用openpyxl.Workbook()函数创建新的workbook(工作簿)对象,就是创建新的空的Excel文件。
wb = openpyxl.Workbook()

4)获取工作表:

# wb.active就是获取这个工作簿的活动表,通常就是第一个工作表。
sheet = wb.active

# 可以用.title给工作表重命名。现在第一个工作表的名称就会由原来默认的“sheet1”改为"new title"。
sheet.title = 'new title'

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第9张图片

5)单元格内写入内容:

# 把'漫威宇宙'赋值给第一个工作表的A1单元格,就是往A1的单元格中写入了'漫威宇宙'。
sheet['A1'] = '漫威宇宙' 
接下来可以用append 函数往工作表内写入内容:
# 把我们想写入的一行内容写成列表,赋值给row。
row = ['美国队长','钢铁侠','蜘蛛侠']

# 用sheet.append()就能往表格里添加这一行文字。
sheet.append(row)

 6)保存 Excel 文件:

# 保存新建的Excel文件,并命名为“Marvel.xlsx”
wb.save('Marvel.xlsx')

7)完整代码

import openpyxl 
# 写入的代码:
wb = openpyxl.Workbook() 
sheet = wb.active
sheet.title = 'new title'
sheet['A1'] = '漫威宇宙'
rows = [['美国队长','钢铁侠','蜘蛛侠','雷神'],['是','漫威','宇宙', '经典','人物']]
for i in rows:
    sheet.append(i)
print(rows)
wb.save('Marvel.xlsx')

# 读取的代码:
wb = openpyxl.load_workbook('Marvel.xlsx')
sheet = wb['new title']
sheetname = wb.sheetnames
print(sheetname)
A1_cell = sheet['A1']
A1_value = A1_cell.value
print(A1_value)

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第10张图片


四. 代码实战

以爬取博主自己博客为例,代码如下:

import requests
# 引用requests模块
import openpyxl

# 创建工作簿
wb = openpyxl.Workbook()
# 获取工作簿的活动表
sheet = wb.active
# 工作表重命名为KUUUD。
sheet.title = 'KUUUD'

sheet['A1'] = '文章题目'
sheet['B1'] = '文章网址'
sheet['C1'] = '点赞数'
sheet['D1'] = '观看量'
sheet['E1'] = '评论数'
sheet['F1'] = '发布时间'

url = 'https://blog.csdn.net/community/home-api/v1/get-business-list?page=1&size=20&businessType=blog&orderby=&noMore=false&year=&month=&username=weixin_53919192'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36'}

res_articles = requests.get(url,headers=headers)
# 调用get方法,下载评论列表

json_articles = res_articles.json()

# 使用json()方法,将response对象,转为列表/字典
list_title = json_articles['data']['list']
# 一层一层地取字典,获取评论列表
for article in list_title:
# list_comments是一个列表,comment是它里面的元素  
    article_name = article['title']
    article_url = article['url']
    article_diggCount = article['diggCount']
    article_viewCount = article['viewCount']
    article_commentCount = article['commentCount']
    article_postTime = article['postTime']
    
    sheet.append([article_name, article_url, article_diggCount, article_viewCount, article_commentCount, article_postTime])
    print(article_name, article_url, article_diggCount, article_viewCount, article_commentCount, article_postTime)

# 最后保存并命名这个Excel文件        
wb.save('KUUUD.xlsx')    

爬虫学习——获得数据后的数据存储(csv & Excel 的写入与读取)_第11张图片


总结

        程序员写代码并不是从0开始的,我们也是需要借助多个模板拼接,使得代码能够实现我们的想法,而且也并非默写出来,毕竟学习编程是开卷学习,开卷使用,本文介绍了网页爬虫获取数据后数据存储两种方法,而且应该注意的是本文的代码不一定一直具有有效性,毕竟爬虫与防爬也在一直进步,但本文爬虫的模板概念的介绍还是一直有效的,希望对你有帮助,加油,希望你我一同走进爬虫的世界~~

        欢迎大家留言一起讨论问题~~~


注:本文是参考风变编程课程资料(已经授权)及部分百度资料整理所得,系博主个人整理知识的文章,如有侵权,请联系博主,感谢~


爬虫文章专栏

https://blog.csdn.net/weixin_53919192/category_11748211.htmlhttps://blog.csdn.net/weixin_53919192/category_11748211.html

你可能感兴趣的:(爬虫,python,经验分享,学习,爬虫)