#csv写数据
import csv #导入csv模块
#加newline=' '参数的原因是,可以避免csv文件出现两倍的行距(就是能避免表格的行与行之间出现空白行)
#加encoding='utf-8',可以避免编码问题导致的报错或乱码
csv_file = open('demo.csv','w',newline = '',encoding = 'utf-8')
writer = csv.writer(csv_file)
#借助writerow()函数可以在csv文件里写入一行文字
writer.writerow(['电影','豆瓣评分'])
writer.writerow(['银河护卫队','8.0'])
#写入完成后,关闭文件就大功告成啦!
csv_file.close()
#csv读取数据
csv_file = open('demo.csv','r',newline = '',encoding = 'utf-8') #打开文件
reader = csv.reader(csv_file) #用csv.reader()函数创建一个reader对象
for row in csv_file: #逐行读取
print(row)
csv模块的详细解析: csv模块详细使用方法
#openpyxl写数据
import openpyxl #导入openpyxl模块
wb = openpyxl.Workbook() #创建空的Excel文件
sheet = wb.active #获取工作簿的活动表,通常是第一个工作表
sheet.title = '猫看见' #给工作表命名
#在A1单元单独写入数据
sheet['A1'] = '猫看见偶像说'
#单行数据的写入
row = ['写入','读取','模块'] #创建一个列表用以批量写入
sheet.append(row) #append将数据写入单元格中
#多行数据的写入,以列表进行分开,最后写入大列表
rows = [['写入','读取','模块'],['怪物','格格不入','同类', '经典','人物']]
for i in rows:
sheet.append(i) #遍历rows,同时把遍历的内容添加到表格里,这样就实现了多行写入。
wb.save('测试.xlsx') #保存新建的Excel文件,并命名为“测试.xlsx”
#openpyxl读取数据
wb = openpyxl.load_workbook('测试.xlsx') #获取工作簿
sheet = wb['猫看见'] #指定子表
sheetname = wb.sheetnames #获取所有子表的名字并打印出来
print(sheetname)
#把工作表中A1单元格赋值给一个变量,再利用单元格value属性,就能打印出A1单元格的值
A1 = sheet['A1'].value
print(A1)
#爬取豆瓣前250部优质电影的序号、名字、评分、推荐语、链接
import requests,bs4,openpyxl
wb=openpyxl.Workbook() #创建工作薄
sheet=wb.active #获取工作薄的活动表
sheet.title='电影' #工作表重命名
sheet['A1'] ='序号' #加表头
sheet['B1'] ='电影'
sheet['C1'] ='评分'
sheet['D1'] ='推荐语'
sheet['E1'] = '链接'
for i in range(10): #网站的数据有十页
url = 'https://movie.douban.com/top250?start=' + str(i*25) + '&filter=' #找到不同页数的网址规律
res = requests.get(url) #获取网页
bs = bs4.BeautifulSoup(res.text,'html.parser') #解析网页
bs = bs.find('ol',class_ = 'grid_view') #开始查找数据标签
for titles in bs.find_all('li'):
num = titles.find('em',class_ = "").text
title = titles.find('span',class_ = "title").text
comment = titles.find('span',class_ = "rating_num").text
url_movie = titles.find('a')['href']
if titles.find('span',class_ = "inq") != None: #有些电影可能没有写评语
tes = titles.find('span',class_ = "inq").text
print(num + '.' + title + '--' + comment + '\n' + '评语:' + tes + '\n' + url_movie)
else:
print(num + '.' + title + '--' + comment + '\n'+ '\n' + url_movie)
sheet.append([num,title,comment,tes,url_movie]) #用append将数据写入表格
wb.save('豆瓣高评分经典电影.xlsx') #保存表格数据