Python学习 Day47 文件存储-openpyxl 12

openpyxl 模块

一、openpyxl模块概述

特点:

  • 1.可以读取和写入Excel
  • 2.需要单独安装,不包含在Python标准库里
  • 3.处理Excel数据
  • 4.处理Excel公式
  • 5.处理Excel样式
  • 6.在表格内插入图表

安装与测试

  • 安装:pip install openpyxl
  • 测试:打开命令行,输入python>>>import openpyxl

二、Python操作Excel文件

(一)向Excel文件中写入数据

  • 1.创建工作簿对象 openpyxl.Workbook()
  • 2.获取活动工作表对象 wb.active
  • 3.获取单元格 sheet[单元格名称]
  • 4.向单元格中写入数据 cell.value = 值
  • 5.向Excel中写入一行数据 sheet.append(列表)
  • 6.保存Excel文件 wb.save(文件)
import openpyxl

#创建工作簿对象
wb = openpyxl.Workbook()
#获取工作表sheet
sheet = wb.active
#获取指定的单元格
cell = sheet['A1']
#向单元格中写入数值
cell.value = '美丽中国'
#一次写入一行数据
lst = ['姓名','年龄','成绩']
sheet.append(lst)
#一次写入多行数据
lst2 = [
    ['张三',23,76],   #第一行
    ['李四',22,90],   #第二行
    ['王五',21,89]    #第三行
]
for row in lst2:
    sheet.append(row)
#保存
wb.save('我的Excel文件.xlsx')

在这里插入图片描述


(二)从Excel文件中读取数据

  • 1.加载工作簿对象 openpyxl.load_Workbook()
  • 2.获取活动工作表对象 wb.active
  • 3.获取单元格 sheet[单元格名称]
  • 4.获取单元格的值 cell.value
  • 5.获取一系列格子 sheet[‘A’],sheet[‘3’],sheet[‘A:C’]
  • 6.获取整个表格的所有行 sheet.rows
import openpyxl

#加载Excel文件,实际上也是创建一个Python中的工作簿对象
wb = openpyxl.load_workbook('销售数据.xlsx')

#获取工作表对象
#sheet = wb.active #因为当前工作簿中只有这一个工作表,可以使用此种写法
sheet = wb['Sheet']  #如果一个工作簿中有多个工作表书写格式:wb['工作表名称']

#获取指定的单元格
cell = sheet['A1']
#获取指定单元格中的内容
value = cell.value
#print(value)

#获取一系列的格子
columns = sheet['A'] #获取A列,返回元组
for col in columns:     #遍历元组,得到单元格
    print(col.value)    #输出每个单元格的值
#print(columns)
print('-------------------------------------------------------')
row = sheet[3]  #获取第三行
for cell in row: #第三行中的每一个单元格
    print(cell.value)   #获取第三行每个单元格的值
#print(row)
print('--------------------------------------------------------')
cols = sheet['B:C'] #获取两列
for col in cols: #获取每一列
    for cell in col: #获取每一个列中的单元格
        print(cell.value)  #获取每一个单元格的值
    print('-----------------------------------------------------')

在这里插入图片描述


三、案例——爬取下厨房

获取请求数据
在这里插入图片描述
解析数据:获取数据所在的HTML标签
在这里插入图片描述
在这里插入图片描述
再进一步解析:食材原料
在这里插入图片描述
在这里插入图片描述
进一步解析:获取菜品链接
在这里插入图片描述
在这里插入图片描述
渠道完整链接:字符串拼接

food_url = 'http://www.xiachufang.com/'+lst_name[i].find('a')['href'] #获取菜品链接

在这里插入图片描述
存储数据

 lst.append([count,lst_name[i].text,lst_category[i].text,food_url])

在这里插入图片描述
调整格式:存储时切片

lst.append([count,lst_name[i].text[18:-14],lst_category[i].text[1:-1],food_url])

在这里插入图片描述
将数据存储到Excel中

def save(lat):
    '''将数据存储到Excel文件中'''
    wb = openpyxl.Workbook()
    sheet = wb.active
    for row in lst:
        sheet.append(row)
    wb.save('下厨房美食.xlsx')

在这里插入图片描述


完整代码

import requests
import openpyxl
from bs4 import BeautifulSoup

def send_tuquests():
    url = 'https://www.xiachufang.com/explore/'
    headers = {
    
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.128 Safari/537.36'}
    resp = requests.get(url,headers=headers)
    return resp.text

def parse_html(html):
    '''解析数据'''
    count = 0 #计数,Excel表中的第一列序号
    #创建bf对象
    bs = BeautifulSoup(html,'lxml')
    #查找名为name的p标签
    lst_name = bs.find_all('p',class_='name')
    lst_category = bs.find_all('p',class_='ing ellipsis')
    #print(lst_name)
    #print(lst_category)
    lst = [] #用于存储解析好的数据列表
    for i in range(len(lst_name)):
        count+=1
        food_url = 'http://www.xiachufang.com/'+lst_name[i].find('a')['href'] #获取菜品链接
        #print(food_url)
        lst.append([count,lst_name[i].text[18:-14],lst_category[i].text[1:-1],food_url])
    #print(lst)
    save(lst)

def save(lst):
    '''将数据存储到Excel文件中'''
    wb = openpyxl.Workbook()
    sheet = wb.active
    for row in lst:
        sheet.append(row)
    wb.save('下厨房美食.xlsx')

def start():
    result = send_tuquests()
    parse_html(result)

if __name__ == '__main__':
    start()

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/ShengXIABai/article/details/116082756
今日推荐