這種動態加載的頁面,一般數據會在Network的 JS或者 XHR 類目裏。所以我們要使用開發者工具輔助。
URL:https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E9%9D%92%E6%98%A5
一:打開開發者工具,看這一頁的 XHR裏沒有任何文件,然後點擊“加載更多”按鈕,看它給我們返回什麼信息。
返回了一個新的文件,右鍵這個文件,Open in new tab。
這個頁面是一個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))