python爬蟲之解析動態json數據

1.找到目標網址

六房間:https://v.6.cn/minivideo/
在這裏插入圖片描述

2.按 F12 進入開發者模式,找到Network , 選擇 XHR , 刷新頁面

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

3.根據上圖找到url和headers內容。然後下面直接上代碼

# 爬蟲的一般思路:
# 1、確定爬取url路徑,headers參數
# 2、發送請求:requests 模擬瀏覽器發送請求,獲取響應數據
# 3、解析數據:json模塊:把json字符串轉換成python可交互的數據類型字典
# 4、保存數據:將下載的數據保存在目標文件夾中
import requests
import json

def spider():
    for page in range(1,5):	# 1~5 頁,測試用。
        # 1、確定爬取url路徑,headers參數
        url = 'https://v.6.cn/minivideo/getlist.php'
        headers = {
            'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36',
            'cookie' : 'shrek_reft=21%7C157770825295128; _uuid=8a6029521d2956ea; roomCookie=e30%3D; shrek_uuid=B3157770825240414; _LiveGuestUser=1575067825%7C%E6%B8%B8%E5%AE%A2niuhta'
        }
        params = {
            'act' : 'recommend',
            'page' : str(page),
            'pagesize' : '20'
        }
        # 2、發送請求:requests 模擬瀏覽器發送請求,獲取響應數據
        response = requests.get(url, headers=headers, params=params)
        data = response.text
        # print(data)
        # 3、解析數據:json模塊:把json字符串轉換成python可交互的數據類型字典
        dict_data = json.loads(data)
        # print(dict_data)
        data_list = dict_data['content']['list'] # 拿到playurl數據
        print(data_list)

        # 遍歷列表下的字典
        for data_list in data_list:
            video_title = data_list['title'] + '.mp4'
            playurl = data_list['playurl']
            print(video_title, playurl)

            print('正在下載:', video_title)
            video_data = requests.get(playurl, headers).content

            # 4、保存數據:將下載的數據保存在目標文件夾中,需要在項目下新建一個video文件夾,負責報錯
            with open('video\\' + video_title, 'wb') as f:
                f.write(video_data)
                print('下載完成。。。\n')


if __name__ == '__main__':
    spider()

4.最後上個結果圖

在這裏插入圖片描述
ps:存在一個問題,下載比較慢,也沒有說被屏蔽中斷,就是下載的很慢,難道是我網不好?可能因電腦而異吧。。。

發佈了52 篇原創文章 · 獲贊 44 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章