如何将爬取的数据直接导入excel表格
# 如何通过python代码操作excel表格
# 前戏
import requests
import time
from openpyxl import Workbook
from bs4 import BeautifulSoup
wb = Workbook()
sheet = wb.active
count = 1
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
}
for i in range(0,250,25):
ret = requests.get('https://movie.douban.com/top250?start=%s&filter='%(i),
headers=headers
)
bs = BeautifulSoup(ret.text,'html.parser')
ol = bs.find(name='ol',attrs={'class':'grid_view'})
li_list = ol.find_all(name='li')
sheet.title = '好评电影'
sheet['A1'].value = '序号'
sheet['B1'].value = '电影名称'
sheet['C1'].value = '电影评分'
sheet['D1'].value = '电影链接'
sheet['E1'].value = '电影图片'
for li in li_list:
name = li.find(name='span',attrs={'class':'title'})
a = li.find(name='a')
span = li.find(name='span',attrs={'class':'rating_num'})
img = a.find(name='img')
count += 1
sheet['A%s'%(count)].value = count - 1
sheet['B%s'%(count)].value = name.text
sheet['C%s'%(count)].value = span.text
sheet['D%s'%(count)].value = a['href']
sheet['E%s'%(count)].value = img['src']
time.sleep(1)
wb.save('好评电影.xlsx')
openpyxl模块
"""
在python中操作excel表格的模块其实非常多
但是最近比较火的就是openpyxl
在此之前也有两个模块比较常用
xlwd和xlrt
也是读写分离的
xlwd控制写
xlrt控制读
读写分离
数据库集群及读写分离的概念
excel文件的后缀名演变过程
03版本之后的后缀名是xlsx的
03版本之后的xls的
openpyxl模块只能操作xlsx文件
xlwd、xlrt模块兼容两种后缀名文件
03之前03之后的都可以操作
"""
基本使用
# 写
from openpyxl import WorkBook
wb = WorkBook()
wb.active()
wb1 = wb.create_sheet() # sheet sheet1 sheet2 ...
# 第一种
wb1['A3'] = 666 # 在A3对应的表格中写数据666
# 第二种
wb1.cell(row=3, column=4, value=999) # 在第三行第四列的位置上写数据999
# 插入公式
wb1['A6'] = '=sum(A4:A5)' # 求A4与A5的和 注意等号一定要加
# 一行行数据的添加
wb1.append(['name','age','gender','phone'])
# wb1.append([])添加空行的方式 每append一次就是一行内容
wd1.append(['jason','18','male',110])
wb.save('111.xlsx')
# 读
from openpyxl import load_workbook
wb = load_workbook('1.xlsx')
# 查看当前excel表格中所有的工作簿名称
wb.sheetnames # 结果是一个列表['sheet','sheet1','sheet2'...]
# 获取具体某一个工作簿对象
wb1 = wb.sheetname['sheet2']
# 读取数据的时候一定要加上value属性
# 第一种取值方式
print(wb1['A3'].value) # 不是结果 需要再点value
print(wb1['A6'].value) # 获取用函数统计的数据,发生无法取到值
# 第一需要加一个参数
# 第二部需要人为的先去修改一下用程序产生的excel表格(不可能用程序产生excel文件之后又直接再用程序去读入,这样没有任何实际意义 通常用程序创建好表格后给人看,人讲自己修改的表格再交由程序处理)
print(wb1.cell(row=3,column=4).value) # 第二种取值方式
# 获取当前工作簿最大行数和列数
wb1.max_row
wb1.max_column
# 获取一行行的数据
for row in wb1.rows: # 拿到每一行的数据
for data in row: # 拿到一行行数据里面每一个单元格的数据
print(data.value)
# 获取一列列的数据(如果想获取 必须把readonly去掉)
for column in wb1.columns: # 拿到每一列的数据
for r in column: # 拿到一列列数据里面每一个单元格的数据
print(r.value)