爬虫——openpyxl模块

如何将爬取的数据直接导入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)
posted @ 2020-09-27 20:38  最冷不过冬夜  阅读(228)  评论(0编辑  收藏  举报