打开豆瓣电影,点击当中的排行榜,相应的类型选择为喜剧类型,当前的数据如果不使用数据解析来实现的话,会不会通过阿贾克斯请求来请求到json形式相应的电影数据呢?
当滚轮拖动到底部的时候,发现滚轮很快就变动到中间了,意味着滚轮拖动到底部的时候又重新发起了一波请求,请求到了另外一波电影数据。
我们发现滚轮拖动到底部的时候,捕获到一个相应的阿贾克斯数据包
意味着对下面这个url的前面的url内容
https://movie.douban.com/j/char/top_list
发起一个get请求并且传入相应的参数
就可以拿到一组json数据
查看response中具体的选项内容
可以看到其中的Content-Type的类型为json,打开相应的response发现其中的内容为相应的json数据
完整的对应代码如下:
import requests
import json
url = 'https://movie.douban.com/j/chart/top_list'
#原先url = https://movie.douban.com/j/chart/top_list?type=24&interval_id=100%3A90&action=&start=20&limit=20
#将?后面的数据都封装到相应的字典之中#将Query String Parameters中对应的5个参数粘贴过来
#浏览器最下面一栏的Query String Parameters能够查看到相应的5个参数
param = {'type': '24','interval_id': '100:90','action':'', 'start':'1',#从库中第几部电影去取'limit':'20'#一次取出的个数
}
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 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!!!')
打开对应的json格式的文件
发现第一部电影为美丽人生,仔细观察打开网址的相应的界面
发现右边的电影为美丽人生(第一部电影),也就是说电影的编号是从0开始的,第0部电影为相应的憨豆先生精选辑。