Python 獲取動態加載的頁面數據

這種動態加載的頁面,一般數據會在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))

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章