需求
爬取豆瓣电影分类排行榜中的电影详情数据。
分析
进入豆瓣电影分类排行榜 - 喜剧片页面,可以发现该页面向下滚动刷新,是进行局部刷新的,可以通过ajax实现。打开开发者工具,找到url、User-Agent,数据包的请求方式以及数据包响应数据的类型。
可以看到请求方式是get,响应数据类型是json,所以使用requests.get()方式发起请求,使用json()方法获取相应对象。
因为页面是可以刷新获取更多电影信息的,我们需要进行动态参数处理。在数据包的Headers框中的最下方有五个参数,它们就是要处理的参数。其中,start表示从库中的第几部电影去取,limit表示一次取出的个数。我们可以对这两个参数任意进行操作。
代码
import requests
import json
if __name__ == '__main__':
url = 'https://movie.douban.com/j/chart/top_list'
param = {
'type': '24',
'interval_id': '100:90',
'action': '',
'start': '0', # 表示从库中的第几部电影去取
'limit': '20', # 一次取出的个数
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36'}
response = requests.get(url=url, params=param, headers=headers)
list_data = response.json()
fp =open('douban.json', 'w', encoding='utf-8')
json.dump(list_data, fp=fp, ensure_ascii=False)
print('over!!!')