作业解析
import random
import openpyxl
# 采取XLSX文件,方便对列进行操作
# 创建文件
wb = openpyxl.Workbook()
# 新建工作表
wb.create_sheet('学生成绩')
# 添加列
cols = ['姓名', '语文', '数学', '英语']
for i in range(len(cols)):
wb.['学生成绩'].cell(1, i+1).value = cols[i] # wb.['学生成绩']:对应工作表
# 写入数据
for i in range(1,101):
wb['学生成绩'].cell(i + 1, 1).value = 'python{:0>3}'.format(i)
# 生成成绩写入表格
for i in range(2, 102):
for j in range(2, 5):
wb['学生成绩'].cell(i, j).value = random.randint(0, 101)
# 保存文件
wb.save('学生成绩.xlsx') # project如果没有生成文件,刷新即可
# 加载源文件
wb = openpyxl.load_workbook('学生成绩.xlsx')
# 找工作表
# 对行号进行遍历
list1 = [] # 语文成绩
list2 = [] # 数学成绩
list3 = [] # 英语成绩
for i in range(2,102):
list1.append(wb['学生成绩'].cell(i,2).value)
list2.append(wb['学生成绩'].cell(i,3).value)
list3.append(wb['学生成绩'].cell(i,4).value)
# 列表表达式
a=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,2).value == max(list1)] # 语文成绩最高分对应学号
b=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,2).value == min(list1)] # 语文成绩最低分对应学号
c=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,3).value == max(list2)]
d=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,3).value == min(list2)]
e=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,4).value == max(list3)]
f=[wb['学生成绩'].cell(i,1).value for i in range(2,102)if wb['学生成绩'].cell(i,4).value == min(list3)]
print(f'语文成绩最高分对应学生:{a},语文成绩最低分对应学生:{b}')
print(f'数学语文成绩最高分对应学生:{c},数学成绩最低分对应学生:{d}')
print(f'英语成绩最高分对应学生:{e},英语成绩最低分对应学生:{f}')
# 添加总分
wb['学生成绩'].cell(1,5).value = '总分'
max_=0
min_=300
# 计算总分
for i in range(2,102):
wb['学生成绩'].cell(i,5).value=\
wb['学生成绩'].cell(i,2).value+wb['学生成绩'].cell(i,3).value+wb['学生成绩'].cell(i,4).value
if wb['学生成绩'].cell(i,5).value > max_:
max_=wb['学生成绩'].cell(i,5).value
if wb['学生成绩'].cell(i,5).value <min_:
min_=wb['学生成绩'].cell(i,5).value
# 寻找排名第一和倒数第一的学生
first_stu = []
last_stu = []
for i in range(2,102):
if wb['学生成绩'].cell(i,5).value ==max_:
first_stu.append(wb['学生成绩'].cell(i,1).value)
if wb['学生成绩'].cell(i,5).value == min_:
last_stu.append(wb['学生成绩'].cell(i, 1).value)
print(f'排名第一的同学是{first_stu},'
f'排名最后的同学是{last_stu}')
# 保存关闭
wb.save('学生成绩.xlsx')
xls文件读写模块
xlwt
:xls文件写操作
xrld
:xls文件读操作
openpyxl和xlwt\xlrd对比:
1.openpyxl行列号从1开始;xlwt、xlrd行列号从0开始
2.两者都可以对工作表进行操作
3.两者都可以对单元格定位的形式进行单元格操作
4.xlwt写操作使用write()写
xls文件写操作
import xlwt
import random
# 创建文件
wb = xlwt.Workbook()
# add_sheet:创建工作表
sheet1 = wb.add_sheet('一年级一班成绩')
sheet2 = wb.add_sheet('一年级二班成绩')
sheet3 = wb.add_sheet('一年级三班成绩')
# 写入数据
names =['张飞','刘备','关羽','貂蝉','曹操']
for i in range(len(names)):
sheet1.write(i, 0, names[i])
for j in range(1,4):
# 工作表.write(row,col,content)
sheet1.write(i,j,random.randint(0,100))
# 保存关闭
wb.save('一年级成绩表.xls')
xls文件读操作
import xlrd
# 打开文件
wb = xlrd.open_workbook('一年级成绩表.xls')
# 选择工作表
# sheet_names() --->查看存在的所有工作表
# sheet_by_index()
# sheet_by_names()
ws = wb.sheet_by_index(0)
print(ws.cell(0,0).value)
ws1 = wb.sheet_by_name('一年级一班成绩')
print(ws1.cell(0,0),value)
# 获取行列数
# nrows:获取最大行数
# ncols:获取最大列数
爬虫相关
爬虫
:网络数据采集,按照程序员的想法,有程序员自定义规则编写程序,批量的爬取数据(图片,音频,视频,数据等)
爬虫的流程:
1.解析HTML页面
2.根据前端的语法或者正则表达式提取数据。
3.保存数据
爬虫的方法:requests
、urllib
、selenium
、playwariter
requests:通过网址向服务器发送请求,等待服务器的响应结果。
requests的使用
import requests
URL = '目标网址' # 通常将目标网址赋予一个变量,不然网址太长
# 向网站发送请求,获取目标服务器的响应结果
response = requests.get(url = URL) # 响应结果
# status-code:状态码 ---> 判断服务器和网页状态
# 200:通信正常
# 403: 拒绝了客户端的请求
# 404:网页丢失
# 500:服务器崩溃
# 如果网页发生乱码,只需要根据页面指定编码方式解码即可
# requests 默认使用ISO-8859-1的编码(ASCII)
# utf-8 (万国码)、gbk(国标码)
# 搜索'charset'查找页面使用编码方式;如果没有找到,使用 response.encoding = None
# text:页面源代码(字符串类型)
response.text
# content:页面源代码(二进制形式) 适用音频,视频,图片等
response.content
requests图片下载
import requests
URL ='https://video.pearvideo.com/mp4/adshort/20220614/cont-1765337-15895934_adpkg-ad_hd.mp4' # 目标文件
response = requests.get(url=URL)
if response.status_code == 200:
print(response.content)
# 将图片写入本地文件
# photo=open('1.jpg','wb')
# photo = open('1.mp4', 'wb')
# photo.write(response.content)
# photo.close()
video=open('1.mp4','wb')
video.write(response.content)
video.close()
else:
print(f'状态码:{response.status_code}')