Python—爬虫之爬取豆瓣经典电影并利用openpyxl模块将数据存为excel

Python—爬虫之爬取豆瓣经典电影并利用openpyxl模块将数据存为excel

      • csv文件写入与读取,需要用到csv模块
      • Excel写入与读取,需要用到openpyxl模块
      • 爬取豆瓣经典电影信息并存出

怎么读写文件数据我们再回顾一遍,加深一下印象,最后再应用到爬虫中去就行,不多说,直接上代码。
重要的内容说三遍:一定要敲代码,一定要敲代码,一 定 要 敲 代 码!!!

csv文件写入与读取,需要用到csv模块

#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模块详细使用方法

Excel写入与读取,需要用到openpyxl模块

#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)

Python—爬虫之爬取豆瓣经典电影并利用openpyxl模块将数据存为excel_第1张图片

爬取豆瓣经典电影信息并存出

#爬取豆瓣前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')         #保存表格数据

你可能感兴趣的:(Python—爬虫)