电影中单纯而美好的爱情总是让人陷入美好无瑕的幻想。
代码已上传至个人GitHub,可供查看:获取豆瓣电影爱情片榜单封面图片
爬虫:获取豆瓣电影爱情片榜单封面图片
目的:获取豆瓣电影爱情片榜单封面图片,并保存到本地。
思路:
1、分析网页URL,查看规律
2、敲代码(图片名设置为该电影名称)
一、打开豆瓣电影分类排行榜-爱情片,F12审查元素
在向下滑动的过程中,发现如下规律,每过20张图片就出现一个url,查看URL,就可以发现一些马脚
通过对网页和URL的分析,可以得出以下结论:
- 每过20张图片就出现一个URL,即翻页,所以每页的图片数量为20张,这在URL中也有体现:limit=20;
- URL中的start=xx表示该页是从第几张开始的;
- URL中的interval_id=100%3A90表示的是评价在前10%的电影;
- URL中的type=13表示的是电影类型的代号,13指的是爱情片;
- 在以上条件的限制下,满足要求的电影数量为351部。
二、上代码,为了防止IP被封,我使用了一些代理,并随机设置了睡眠时间,能够更有效的获取数据
from urllib import request
import json
import time
import random
class douban_love_moives():def __init__(self, k):self.k = kdef load_moive(self, start):url = 'https://movie.douban.com/j/chart/top_list?type=13&interval_id=100%3A90&action=&start=' + str(start) + '&limit=20'time.sleep(random.randint(1, 4))rsp = request.urlopen(url)json_data = json.loads(rsp.read().decode())for moive in json_data:self.k += 1time.sleep(random.randint(2, 5))try:request.urlretrieve(moive['cover_url'], 'F:\文件存放处\爱情片电影封面\\' + moive['title'] + '.jpg')print('第' + str(self.k) + '张图片下载成功:' + moive['cover_url'])except Exception:print('第' + str(self.k) + '张图片下载失败:' + moive['cover_url'])def get_moives(self):for start in range(0, 351, 20):# 使用代理步骤# - 1、设置代理地址proxys = [{'http': '39.137.69.10:8080'},{'http': '60.255.186.169:8888'},{'http': '117.191.11.108:80'}]# - 2、创建ProxyHandlerproxy = random.choice(proxys)proxy_handler = request.ProxyHandler(proxy)# - 3、创建Openeropener = request.build_opener(proxy_handler)# - 4、导入Openerrequest.install_opener(opener)self.load_moive(self.k)if __name__ == '__main__':print('开始下载图片......')moive = douban_love_moives(k=0)moive.get_moives()
运行结果:
代码已上传至个人GitHub,可供查看:获取豆瓣电影爱情片榜单封面图片