04、储存我们爬取的数据💪💪💪
存储
一、csv(使用csv模块)
1、写入文件步骤
①创建文件(使用open()函数)
with open("文件名",‘w’,newline=‘’,encoding=‘编码格式’) as f: …… ……
第一参数:文件名;第二个参数:文件的读取模式;第三个参数:保证存储的数据不空行;第四个参数编码格式
②创建对象(writer()函数)
writer = csv.writer(f)
③把内容写入文件(使用writer对象的writerow()方法)
writer.writerow(需要写入的数据)
④关闭文件(close()函数)
2、读取csv文件的步骤
①打开文件(使用open()函数)
open("文件名",'r') as f:
②创建对象(reader()函数)
reader = csv.reader(f)
③读取文件内容(遍历reader对象)
for i in reader:
④打印内容(print()函数)
二、excel(使用openpyxl模块)
1、写入excel文件
①创建文件(openpyxl.load_workbook())
②获取工作表对象(workbook对象的active属性)
③把数据写入单元格(获取单元格sheet['A1];添加一行append())
④保存数据(save()函数)
2、读取Excel文件
①打开文件(openpyxl.load_workbook())
②获取工作表对象(workbook对象通过键来获取)
· ③读取单元格数据(使用value属性)
④打印数据(print()函数)
1.为什么要学Excel
存测试数据
有时候有大批量的数据,存到TXT文件里面显然不是最佳的方式,我们可以存到Excel里面去,第一方便我们存数据和做数据,另一方面方便我们读取数据,比较明朗。测试的时候就从数据库中读取出来,这点是非常重要的。
存测试结果
可以批量把结果存入到Excel中,也是比较好整理数据点,比我们的TXT要好。
2.安装openpyxl
python中与excel操作相关的模块:
- xlrd库:从excel中读取数据,支持xls、xlsx
- xlwt库:对excel进行修改操作,不支持对xlsx格式的修改
- xlutils库:在xlw和xlrd中,对一个已存在的文件进行修改。
- openpyxl:主要针对xlsx格式的excel进行读取和编辑。
官方说法:网址:http://www.python-exceel.org/
安装方式:pip install openxl
3.Excel中的三大对象
- WorkBook:工作簿对象
- Sheet:表单对象
- 创建一个工作薄:wb = openpyxl.Workbook()
- 新增一个sheet表单:wb.create_sheet('test_case')
- 保存case.xlsx文件:wb.save('cases.xlsx')
- 打开工作簿:wb = openpyxl.load_workbook('cases.xlsx')
- 选取表单:sh = wb['Sheet1'
- 读取第一行、第一列的数据:ce = sh.cell(row = 1,column = 1)
- 按行读取数据:row_data = list(sh.rows)
- 关闭工作薄:wb.close()
- 按列读取数据:columns_data = list(sh.columns)
- 写入数据之前,该文件一定要处于关闭状态
- 写入第一行、第四列的数据 value = 'result':sh.cell(row = 1,column = 4,value = 'result')
- 获取最大行总数、最大列总数:sh.max_row、sh.max_column
- del 删除表单的用法:del wb['sheet_name']
- remove 删除表单的用法:sh = wb['sheet_name'] wb.remove(sh)
案例:📖
import requests import openpyxl url = 'https://c.y.qq.com/soso/fcgi-bin/client_search_cp' wb=openpyxl.Workbook() #创建工作薄 sheet=wb.active #获取工作薄的活动表 sheet.title='songs_mayday' #工作表重命名 column_name = ['歌曲名','所属专辑','播放时长','播放链接'] sheet.append(column_name) for x in range(0,3): params = { 'ct': '24', 'qqmusic_ver': '1298', 'new_json': '1', 'remoteplace': 'sizer.yqq.song_next', 'searchid': '64405487069162918', 't': '0', 'aggr': '1', 'cr': '1', 'catZhida': '1', 'lossless': '0', 'flag_qc': '0', 'p': str(x + 1), 'n': '20', 'w': '五月天', 'g_tk': '5381', 'loginUin': '0', 'hostUin': '0', 'format': 'json', 'inCharset': 'utf8', 'outCharset': 'utf-8', 'notice': '0', 'platform': 'yqq.json', 'needNewCode': '0' } # 将参数封装为字典 res_music = requests.get(url, params=params) # 调用get方法,下载这个列表 json_music = res_music.json() # 使用json()方法,将response对象,转为列表/字典 list_music = json_music['data']['song']['list'] # 一层一层地取字典,获取歌单列表 for music in list_music: name = music['name'] # 以name为键,查找歌曲名,把歌曲名赋值给name album = music['album']['name'] # 查找专辑名,把专辑名赋给album time = music['interval'] # 查找播放时长,把时长赋值给time link = 'https://y.qq.com/n/yqq/song/' + str(music['file']['media_mid']) + '.html\n\n' # 查找播放链接,把链接赋值给link sheet.append([name, album, time, link]) # 把name、album、time和link写成列表,用append函数多行写入Excel wb.save('mayday.xlsx') wb.close()

浙公网安备 33010602011771号