爬虫入门——爬取豆瓣top250电影数据并存入excel
最近学习了pyrhon爬虫的相关知识,打算借着写博客梳理一遍,下面先上一个最近做的程序——爬取豆瓣电影中序号、电影名、评分、推荐语、链接的信息并存入excel。也算是一个简单而较完整的爬虫流程了。先看一下流程图:
- 准备工作:首先准备好程序需要的库。爬虫获取数据和解析数据需要requests,bs4;创建exccel需要openpyxl
import requests, bs4
import openpyxl
接下来创建excel表格:
wb=openpyxl.Workbook()
#创建工作簿
sheet=wb.active
#获取工作簿的活动表
sheet.title='豆瓣top250电影'
#工作表重命名
sheet['A1'] ='序号' #加表头,给A1单元格赋值
sheet['B1'] ='电影名'
sheet['C1'] ='评分'
sheet['D1'] ='推荐语'
sheet['E1'] = '链接'
- 找到数据地址
在浏览器中搜索豆瓣电影top250,可以发现如下地址:
同时我们发现1-10页的网址规律是源于start=0-225,那么我们的url地址就很好写了,直接一个for循环可以翻遍所有的页码 - 获取数据及解析数据
经过一番搜寻,可以确定我们需要的数据均在li标签中:
在其中用find方法找到我们需要的数据即可。
headers={'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36'}
for x in range(10):
url = 'https://movie.douban.com/top250?start=' + str(x*25) + '&filter='
res = requests.get(url, headers=headers)
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
sheet.append([num,title,comment,tes,url_movie])
print(num + '\n' + title + '\n' + comment + '\n' + '推荐语:' + tes +'\n' + url_movie)
else:
tes = '\n'
sheet.append([num,title,comment,tes,url_movie])
print(num + '\n' + title + '\n' + comment + '\n' + '推荐语:' + tes +'\n' + url_movie)
注意有个别电影评论是空的,因此我们需要加一个if判断,防止报错。
4. 存储数据
最后将数据存储在excel中
wb.save('movie.xlsx')
最终实现的效果如下:
后面我会陆续从爬虫基础知识整理,也算是对知识体系的梳理和完善吧~learning is always on the way