Python 获取动态加载的页面数据

Python 获取动态加载的页面数据_第1张图片

这种动态加载的页面,一般数据会在Network的 JS或者 XHR 类目里。所以我们要使用开发者工具辅助。

URL:https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E9%9D%92%E6%98%A5

一:打开开发者工具,看这一页的 XHR里没有任何文件,然后点击“加载更多”按钮,看它给我们返回什么信息。

Python 获取动态加载的页面数据_第2张图片

返回了一个新的文件,右键这个文件,Open in new tab。

Python 获取动态加载的页面数据_第3张图片

Python 获取动态加载的页面数据_第4张图片

这个页面是一个JSON格式的数据,通过查看,发现这个json数据的内容就是刚加载的电影数据

二:再加载几次,再来看看 XHR 加载的这几个页面的 url:

https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E9%9D%92%E6%98%A5&start=20
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E9%9D%92%E6%98%A5&start=40
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E9%9D%92%E6%98%A5&start=60
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E9%9D%92%E6%98%A5&start=80
https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=%E9%9D%92%E6%98%A5&start=100

 对比发现只有最后 start= 后面的数字在变化,而且是以20为步长递增的,20正好对应每次加载出来的电影数量。

import requests
import json
import time

for a in range(5):
    url = 'https://movie.douban.com/j/new_search_subjects?sort=T&range=0,10&tags=青春&start={}'.format(a * 20)
    file = requests.get(url).json()  # 返回的是 json文件所以用 .json()
    time.sleep(2)
#每次加载20个电影信息
    for i in range(20):
        dict = file['data'][i]  # 取出字典中 'data' 下第 [i] 部电影的信息
        urlname = dict['url']
        title = dict['title']
        rate = dict['rate']
        cast = dict['casts']
        print('影名:{}  评分:{}  演员:{}  链接:{}\n'.format(title, rate, '、'.join(cast), urlname))

 

你可能感兴趣的:(Python脚本)