openpyxl和xlwt/xlrd对比
- openpyxl行列号从1开始;xlwt、xlrd行列号从0开始
- 两者都可以对工作表进行操作。
- 两者都可以用单元格定位的形式进行单元格操作。
- xlwt写操作使用过write()写
1. xls文件读写
1.1 xls写操作
xls文件写操作使用xlwt模块
import xlwt
import random as rd
# 创建文件
wb1 = xlwt.Workbook()
# 创建工作表(add_sheet)
sh1 = wb1.add_sheet('一年级一班成绩')
sh2 = wb1.add_sheet('一年级二班成绩')
sh3 = wb1.add_sheet('一年级三班成绩')
# 写入数据
names = ['刘备', '关羽', '张飞', '赵云', '马超', '黄忠']
for i in range(len(names)):
sh1.write(i, 0,names[i])
for j in range(1, 5):
# sheet.write(row, col, content)
sh1.write(i, j, rd.randint(0, 100))
# 保存关闭
wb1.save('../file/一年级成绩表.xls')
1.2 xls读操作
xls文件读操作使用xlrd模块
import xlrd
# 打开文件
wb2 = xlrd.open_workbook('../file/一年级成绩表.xls')
# 选择工作表: sheet_names() --->查看所有工作表
# print(wb2.sheet_names())
# sheet_by_index()
# sheet_by_name()
ws = wb2.sheet_by_index(0)
print(ws.cell(0,0).value)
ws1 = wb2.sheet_by_name('一年级一班成绩')
print(ws1.cell(0, 0).value)
# 获取行列数
# nrows:获取最大行数
# ncols:获取最大列数
print(ws1.nrows, ws1.ncols)
2. 爬虫
爬虫又叫网络机器人,进行网络数据采集,按程序员的想法,由程序员自定义规则编写程序批量的爬取数据(图片、音频、视频、数据等)。
爬虫流程
- 解析HTML网页
- 根据前端的语法或正则表达式来提取数据
- 保存数据
2.1 解析网页
requests、urllib、selenium、playwariter等
requests:通过网址向服务器发送请求,等待服务器的响应结果。
2.1.1 状态码
status_code:状态码判断服务器和网页状态
- 200:表示程序和服务器正常通信
- 403:表示服务器理解客服端的请求,但是拒绝了客服的请求。
- 404:网页丢失
- 500:服务器崩溃
2.1.2 网页乱码
如果网页发生乱码,只需要根据页面指定编码方式解码即可
requests默认使用ISO-8859-1的编码(ASCII)
其也能使用页面服务器所指定的编码方式
UTF-8(万国码),gbk(国标码)
如果页面中没有charset=‘’:rsp.encoding = None
- text:网页源代码(字符串类型)
- content:网页源代码(二进制形式(字节))
二进制:b’…’ —>图片、视频、音频
案例1
import requests
url = 'https://game.gtimg.cn/images/yxzj/coming/v2/skins//image/20220623/16559919637365.jpg'
# 向网站发送请求,获取网站服务器的响应结果
rsp = requests.get(url=url)
# 图片下载
if rsp.status_code == 200:
# print(rsp.content)
img = open('../file/花木兰-九霄神辉.jpg', 'wb')
img.write(rsp.content)
img.close()
print('下载完成')
else:
print(f'状态码:{rsp.status_code}')
案例2
import requests
url = 'https://video.pearvideo.com/mp4/adshort/20220614/cont-1765337-15895934_adpkg-ad_hd.mp4'
# 向网站发送请求,获取网站服务器的响应结果
rsp = requests.get(url=url)
# 视频下载
if rsp.status_code == 200:
# print(rsp.content)
mp4 = open('../file/video.mp4', 'wb')
mp4.write(rsp.content)
mp4.close()
print('下载完成')
else:
print(f'状态码:{rsp.status_code}')