1、翻阅网页可找到豆瓣电影 Top 250,网页链接为:
https://movie.douban.com/top250?start=0&filter=
网页特点:
每页25个,共10页
网址start=0数字部分按照每次累加25进行分页
网页链接获取url代码:
for site in range(0, 250, 25):
url = 'https://movie.douban.com/top250?start=' + str(site) +'&filter='
2、利用网页审查元素可以快速获取电影名称部分,根据网页元素,可以发现根据alt定位作业所需内容,利用”作为分隔符,分割内容后获取所需部分:电影名name,图片链接image
#获取电影名、图片链接数据
def parse_html(url): #获取所需数据
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"}
res = requests.get(url, headers=headers) #发送请求
text = res.text #保存网页文本信息
item = [] #定义数组
for i in range(25): #i取值0-24
text = text[text.find('alt')+5:] #查找第i+1个alt,提取alt后第2个字符后面的内容
item.append(extract(text)) #调用分割函数,分割数据,取数组第1、3个值
return item #获取数据赋给item数组
#定义数据分割提取函数
def extract(text): #定义数据分割提取函数
text = text.split('"',3) #使用双引号分割数据,将数据分割为4块
name = text[0] #取第1块数据,赋值name
image = text[2] #取第3块数据,赋值image
return name, image #保留获取数据
3、保存数据,下载图片
def write_movies_file(item, stars): #获取所需数据,并下载图片
with open('douban_film.txt','a',encoding='utf-8') as f: #保存数据并且累加至文件douban_film.txt
f.write('排名:%d\t电影名:%s\n' % (stars, item[0]))
r = requests.get(item[1]) #下载图片
with open('image/' + str(item[0]) + '.jpg', 'wb') as f: #设置图片下载路径,进行图片命名
f.write(r.content) #以二进制的方式进行文件写入
print(item) #打印电影名+图片下载链接
主函数如下(包含排名参数):
def main():
stars = 1 #设置排名参数初始值
for site in range(0, 250, 25): #获取豆瓣电影 Top 250所有网址,网址参数部分0开始,每次累加25,最大达到225
url = 'https://movie.douban.com/top250?start=' + str(site) +'&filter='
for item in parse_html(url): #加入排名参数,并设置随数组变动,排名参数值每次加1
write_movies_file(item, stars) #获取所需数据,并下载图片
stars += 1