您的位置:首页 > 编程语言 > Python开发

用python爬取豆瓣评分前250的电影信息

2020-08-22 10:58 435 查看
import requests,openpyxl,random,bs4
#导入模块
wb = openpyxl.Workbook()
#创建Excle
sheet = wb.active
#wb.active就是获取这个工作薄的活动表,通常就是第一个工作表
sheet.title = 'restaurants'
#给第一个工作表命名
sheet['A1'] = '序号'
sheet['B1'] = '名称'
sheet['C1'] = '评分'
sheet['D1'] = '推荐语'
sheet['E1'] = '网址'
#在单元格相应的位置写入表头

for x in range(10):#要爬取250个,每一次爬取25个,所以要爬取10次
url = 'https://movie.douban.com/top250?start='+ str(25*x) +'&filter='
#目标网址,找到每一页之间的顺序,使用循环挨个爬取
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'}
#使用headers,否则有些网页无法请求成功
res=requests.get(url,headers=headers)
#发送请求
print(res.status_code)
#打印请求结果,如果是200就是没问题
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:
#写入数据,因为有些电影没有播放链接,所以用了if语句写入,判断有没有链接,防止写入的表头与内容不对应
tes = titles.find('span',class_="inq").text
sheet.append([num,title,comment,tes,url_movie])
else:
sheet.append([num,title,comment,'',url_movie])
wb.save('movie.xlsx')
#存储文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: