1. 程式人生 > >Python 獲取動態載入的頁面資料

Python 獲取動態載入的頁面資料

這種動態載入的頁面,一般資料會在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))