# https://movie.douban.com/top250
# https://movie.douban.com/top250?start=25&filter=
# https://movie.douban.com/top250?start=50&filter=
# 用过观察找出 页面 url 的变化规律 每次 start的值 增加25
import requests
from bs4 import BeautifulSoup
import openpyxl # 第三方库 (用于建立 Excel 表) 通过 pip instal openpyxl 下载安装
list2 = [] # 用于将爬取的信息存入此列表方便存入 Excel 表中
for i in range(1,11):
# 生成 1,2,3,4,5,6,7,8,9,10,11
number = (i-1)*25
#print(number)
# 数据请求
link = 'https://movie.douban.com/top250?start='+str(number)+'&filter='
#print(i,link)
headers ={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
} # 当中为 User-Agent 字段 ,注意为字典格式
r = requests.get(link,headers=headers)
#print(r.status_code) 页面状态响应码
# 数据转换
soup = BeautifulSoup(r.text,'html.parser')
#print(soup)
# 提取数据
# 找出最小级的父标签(一个数据)
nu = soup.find_all('div',class_='item')
for g in nu:
# 电影序号
num = g.find('em',class_='').get_text()
# print(num)
# 电影名
name = g.find('span',class_='title').get_text()
name = '《'+name+'》'
#print(name)
# 电影英文名称
name_english = g.find_all('span',class_='title')
#print(name_english)
# 由于有的没有英文名字(例如大圣娶亲就没有) 会报错 这里加个判断
# 由于 使用 fing_all 找出为列表的
# 中文 英文 html 标签结构一样 所以列表中包含的信息有两种
# 通过列表切片的形式 【1】找出列表中的英文(也就是我们需要的数据)
# 下面的结果不打印,当做能力扩展吧
# if len(name_english)>1:
# print(g.find_all('span',class_='title')[1].get_text())
# 电影评分
pingfen = g.find('span',class_='rating_num').get_text()
# print(pingfen)
# 推荐语
# 由于第 10 页 《网络谜踪》中 没有推荐语
# tuijianyu = g.find('span',class_='inq').get_text()
#print(tuijianyu)
try:
tuijianyu = g.find('span',class_='inq').get_text()
except AttributeError:
tuijianyu = "=====很抱歉,这款没有推荐语====="
#print(tuijianyu)
# 电影的视频连接
# a 标签中的 href 的属性便是我们需要的
urls = g.find('div',class_='info').find('a')['href']
list2.append([num,name,pingfen,tuijianyu,urls]) # 将内容添加至定义的空列表中
# print("序号: ",num,"电影名: ",name,"电影评分",pingfen,"推荐语; ",tuijianyu,"视频链接",urls)
# 保存数据
file = openpyxl.Workbook() # 新建一个工作薄
sheet = file.active # 在建立工作薄后建立工作表
sheet.title = '豆瓣爬虫' # 命名
# 开始写入
sheet['A1'] = '排名 '
sheet['B1'] = '电影名 '
sheet['C1'] = '电影评分 '
sheet['D1'] = '推荐语 '
sheet['E1'] = '链接地址 '
for i in list2:
print(i)
sheet.append(i)
file.save(r"C:\Users\DELL\Desktop\python_wd\文本信息\豆瓣爬虫.xlsx") # 保存
猫眼Top电影信息获取
最新推荐文章于 2024-07-12 16:16:27 发布