Python 獲取動態載入的頁面資料
阿新 • • 發佈:2019-02-02
這種動態載入的頁面,一般資料會在Network的 JS或者 XHR 類目裡。所以我們要使用開發者工具輔助。
一:開啟開發者工具,看這一頁的 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))