【爬蟲】DrissionPage-獲取douyim用戶下的視頻

之前看過DrissionPage,覺得很厲害,比selenium簡單,適合新手。因為盲目跟風逆向,今天看了一個DrissionPage案例直播,學習一下,真香哈。

DrissionPage官網:🛰? 概述 | DrissionPage官網

需求分析:

爬取douyim用戶下的視頻。分四個步驟:(最后予完整代碼)

?實現步驟:

1. 獲取到數據包的 json 數據

瀏覽器開發者工具來分析:

按f2,就一個直接就找到了,可能運氣成分:

代碼部分:

# 導入自動化模塊包
from DrissionPage import ChromiumPage as cpdp = cp()  # 實例化一個瀏覽器對象dp.listen.start('web/aweme/post')  # 開啟監聽,監聽所有的操作dp.get('https://www.douyin.com/user/MS4wLjABAAAAx7--dRYA0mPwhwvxNJ-35i6sB8d1Kv4Sj1WmugquqiHK19QYlB18Ikx6cECT1RVO?from_tab_name=main&showTab=post')# 等待數據包并獲取它
data = dp.listen.wait()
json_data = data.response.body  # 從數據包中獲取json數據# 打印json數據
print(json_data)

2. 解析數據

就是通過鍵值對獲取的方式

?代碼部分:

# --------解析數據---------
# 遍歷json數據的視頻所在列表,拿到 標題 ,視頻鏈接 ,視頻ID
json_data = json_data['aweme_list']
for i in json_data:title = i['desc']  # 標題video_url = i['video']['play_addr']['url_list'][0]  # 視頻鏈接video_id = i['aweme_id']  # 視頻ID# 下載視頻import osif not os.path.exists('./video'):  # 如果不存在video文件夾就創建一個os.mkdir('./video')video_content = requests.get(video_url,headers=headers).contentwith open(f'./video/{title}-{video_id}.mp4','wb') as f:  # 保存視頻f.write(video_content)print(title,video_id,video_url)  # 打印

3. 保存視頻

為什么要加 try 捕獲異常是因為有些是圖文,不是視頻,程序運行會報錯的。?

代碼部分:

    # 下載視頻import osif not os.path.exists('./video'):  # 如果不存在video文件夾就創建一個os.mkdir('./video')video_content = requests.get(video_url,headers=headers).contentwith open(f'./video/{title}-{video_id}.mp4','wb') as f:  # 保存視頻f.write(video_content)

?4. 滾動頁面:

其實有很多方法,看看官網,這里用的是css定位元素的方式。

🛰? 元素交互 | DrissionPage官網

# 模擬滾動
tab = dp.ele('css:.ayFW3zux')
dp.scroll.to_see(tab)

完整代碼:

# --------請求下載視頻---requests---------
# 導入請求模塊
import requests# 模擬偽裝,referer 防盜鏈參數必須加,是因為抖音的視頻是通過referer來判斷是否是來自抖音的請求
headers = {'Cookie':'UIFID_TEMP=d42e6e1cd8d751060412d7a6f8b88e73787f686280d2b04969f7be98a81bcfeab7c5fa21b4ba9f3b4996435adfa6ea387e4ef8c399c158c8c557c5155ba553eeab9e17f762b160298890a9671639ff40; fpk1=U2FsdGVkX1+4XWEGtp8nHfpnuY/mjw1pF1fs1QaREN2E+4sCUAI2f/8+whtBvZ2JpHtdCAx9Q4h3MYkr5XhObw==; fpk2=a16ddaab909d2cf27fce353f26dd2ff2; UIFID=d42e6e1cd8d751060412d7a6f8b88e73787f686280d2b04969f7be98a81bcfeab7c5fa21b4ba9f3b4996435adfa6ea388efa7e6a3c894c5d5ccaf7877f18bc3881332b3c108e7facfb7fbbf943b86af535c00cf61ac78c3e6d14a88d40438e519d8b3afe6b8ea3c5b940c528da4e1330372bad55ca598810a3770be41d5799542c939ff40099b794b2e4f44aa22a9a7dd44b9e5342a62bfc8341204fc8b3abbc; csrf_session_id=77f1ddc0d383baa6888bd27425ac0006; is_staff_user=false; SEARCH_RESULT_LIST_TYPE=%22single%22; passport_assist_user=CkFISWrdf4TGRRYuSvpBsN1e-LIzc61qD1l7RCpMxs77nNqyKHZAOMAX7IquTQw8jiH0FtCDUcXqKDnFg_TeH-KqNBpKCjxDfhRMGtgLZZ0jvyBDqN13Em4qO3zQVYMgYaWN5SR0Wk5WNOEe1rRbLXaG8hyztNvo7-tnHSSbQ2rzpA4QpbrmDRiJr9ZUIAEiAQO605iB; uid_tt=3aad5a01473a92a367fbb427a8dc8fd1; uid_tt_ss=3aad5a01473a92a367fbb427a8dc8fd1; sid_tt=f2a11ada0a99bd065517c0d345e4d54a; sessionid=f2a11ada0a99bd065517c0d345e4d54a; sessionid_ss=f2a11ada0a99bd065517c0d345e4d54a; passport_csrf_token=5bffbc8074e17276b412b6937e7a16a5; bd_ticket_guard_client_web_domain=2; douyin.com; device_web_cpu_core=16; device_web_memory_size=8; hevc_supported=true; dy_swidth=1707; dy_sheight=1067; __security_mc_1_s_sdk_crypt_sdk=40f47ba1-4dc9-863a; __security_mc_1_s_sdk_cert_key=e63c5915-4014-a214; __security_mc_1_s_sdk_sign_data_key_web_protect=56cd4cb0-4e38-9fb8; is_dash_user=1; volume_info=%7B%22isUserMute%22%3Afalse%2C%22isMute%22%3Afalse%2C%22volume%22%3A0.51%7D; s_v_web_id=verify_m9tpjol8_8AiUEWPm_mVrq_47t0_Bfpz_VDjuchxS8I4Y; sid_guard=f2a11ada0a99bd065517c0d345e4d54a%7C1745399076%7C5184000%7CSun%2C+22-Jun-2025+09%3A04%3A36+GMT; sid_ucp_v1=1.0.0-KGQ0ZGYxY2UwMDM1ODg0NDQwMmYzMjRiZDAyNTk3MTJkMDk0YzBlMzEKGwi4tNDQ0I27BRCk2qLABhjvMSAMOAZA9AdIBBoCbGYiIGYyYTExYWRhMGE5OWJkMDY1NTE3YzBkMzQ1ZTRkNTRh; ssid_ucp_v1=1.0.0-KGQ0ZGYxY2UwMDM1ODg0NDQwMmYzMjRiZDAyNTk3MTJkMDk0YzBlMzEKGwi4tNDQ0I27BRCk2qLABhjvMSAMOAZA9AdIBBoCbGYiIGYyYTExYWRhMGE5OWJkMDY1NTE3YzBkMzQ1ZTRkNTRh; live_use_vvc=%22false%22; xgplayer_user_id=740434788336; xgplayer_device_id=46605573762; ttwid=1%7CYtvmoWaQoIoT6lDfBN3mTA4u5Gdp0-z8cMxUyA5Z2MY%7C1745411664%7C646ab1cdbb2bf9c40fd7e5b6cd236061e3e4c8b5870ee035ee5417e6efdc1ef5; passport_fe_beating_status=true; xg_device_score=7.659677575262982; my_rd=2; stream_player_status_params=%22%7B%5C%22is_auto_play%5C%22%3A0%2C%5C%22is_full_screen%5C%22%3A0%2C%5C%22is_full_webscreen%5C%22%3A0%2C%5C%22is_mute%5C%22%3A0%2C%5C%22is_speed%5C%22%3A1%2C%5C%22is_visible%5C%22%3A0%7D%22; publish_badge_show_info=%220%2C0%2C0%2C1745477129551%22; strategyABtestKey=%221745546882.414%22; biz_trace_id=190a294e; _bd_ticket_crypt_cookie=aa406af6d4786da0e1a600d8eec6733c; FOLLOW_RED_POINT_INFO=%221%22; FOLLOW_NUMBER_YELLOW_POINT_INFO=%22MS4wLjABAAAAs5GeYafYBCD76fhhG9xmPTMGt4m7bxVsVgtI2xIrDd4f2F5bwoyXWl1x0SgcymKW%2F1745596800000%2F1745574470779%2F1745574470586%2F0%22; FRIEND_NUMBER_RED_POINT_INFO=%22MS4wLjABAAAAs5GeYafYBCD76fhhG9xmPTMGt4m7bxVsVgtI2xIrDd4f2F5bwoyXWl1x0SgcymKW%2F1745596800000%2F1745574475173%2F0%2F0%22; SelfTabRedDotControl=%5B%7B%22id%22%3A%227234445667354019898%22%2C%22u%22%3A714%2C%22c%22%3A714%7D%2C%7B%22id%22%3A%227176589422232619008%22%2C%22u%22%3A224%2C%22c%22%3A224%7D%2C%7B%22id%22%3A%227326135789812811827%22%2C%22u%22%3A44%2C%22c%22%3A44%7D%2C%7B%22id%22%3A%227316397227957651508%22%2C%22u%22%3A435%2C%22c%22%3A435%7D%5D; __ac_nonce=0680b5ccd00011b417918; __ac_signature=_02B4Z6wo00f01JJnf8gAAIDCHE9VYiYp8giSR3tAAEyX4c; stream_recommend_feed_params=%22%7B%5C%22cookie_enabled%5C%22%3Atrue%2C%5C%22screen_width%5C%22%3A1707%2C%5C%22screen_height%5C%22%3A1067%2C%5C%22browser_online%5C%22%3Atrue%2C%5C%22cpu_core_num%5C%22%3A16%2C%5C%22device_memory%5C%22%3A8%2C%5C%22downlink%5C%22%3A10%2C%5C%22effective_type%5C%22%3A%5C%224g%5C%22%2C%5C%22round_trip_time%5C%22%3A100%7D%22; FOLLOW_LIVE_POINT_INFO=%22MS4wLjABAAAAs5GeYafYBCD76fhhG9xmPTMGt4m7bxVsVgtI2xIrDd4f2F5bwoyXWl1x0SgcymKW%2F1745596800000%2F0%2F1745576152449%2F0%22; home_can_add_dy_2_desktop=%221%22; bd_ticket_guard_client_data=eyJiZC10aWNrZXQtZ3VhcmQtdmVyc2lvbiI6MiwiYmQtdGlja2V0LWd1YXJkLWl0ZXJhdGlvbi12ZXJzaW9uIjoxLCJiZC10aWNrZXQtZ3VhcmQtcmVlLXB1YmxpYy1rZXkiOiJCSk8vYktlRmJjcnNKN3ZFdk9mWUlpTGtGcFBFRE9HYlJ2Uk9UN2ZSZEszRko3L3EzbEdpYjF1L3J5WUw3QTU3aFZiYVgvcXZxeXBPRFBuVnV6L0hEWnc9IiwiYmQtdGlja2V0LWd1YXJkLXdlYi12ZXJzaW9uIjoyfQ%3D%3D; odin_tt=68649f1a25bb97f1351835ecad1f6853050360fba260ef27a15c43e1850bc75557c2534169ba7a75e2e3d601f117d4aa; IsDouyinActive=true','Referer':'https://www.douyin.com/user/MS4wLjABAAAAx7--dRYA0mPwhwvxNJ-35i6sB8d1Kv4Sj1WmugquqiHK19QYlB18Ikx6cECT1RVO?from_tab_name=main&showTab=post','User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 115Browser/27.0.6.3'
}# ---------抓包獲得數據---DrissionPage--------------
# 導入自動化模塊包
from DrissionPage import ChromiumPage as cpdp = cp()  # 實例化一個瀏覽器對象dp.listen.start('web/aweme/post')  # 開啟監聽,監聽所有的操作dp.get('https://www.douyin.com/user/MS4wLjABAAAAx7--dRYA0mPwhwvxNJ-35i6sB8d1Kv4Sj1WmugquqiHK19QYlB18Ikx6cECT1RVO?from_tab_name=main&showTab=post')
for j in range(1,11):try:print(f'第{j}頁數據獲取中......')# 等待數據包并獲取它data = dp.listen.wait(timeout=5)json_data = data.response.body  # 從數據包中獲取json數據# 打印json數據# print(json_data)# --------解析數據---------# 遍歷json數據的視頻所在列表,拿到 標題 ,視頻鏈接 ,視頻IDjson_data = json_data['aweme_list']for i in json_data:title = i['desc']  # 標題video_url = i['video']['play_addr']['url_list'][0]  # 視頻鏈接video_id = i['aweme_id']  # 視頻ID# 下載視頻import osif not os.path.exists('./video'):  # 如果不存在video文件夾就創建一個os.mkdir('./video')video_content = requests.get(video_url,headers=headers).contentwith open(f'./video/{title}-{video_id}.mp4','wb') as f:  # 保存視頻f.write(video_content)print(title,video_id,video_url)  # 打印except Exception as e:  # 如果超時就跳過pass# 模擬滾動tab = dp.ele('css:.ayFW3zux')dp.scroll.to_see(tab)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/80529.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/80529.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/80529.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

中國礦業大學iGMAS分析中心介紹

一、關于GNSS和iGMAS 在浩瀚的太空中,全球衛星導航系統(GNSS)構建起精準定位的時空基準。IGMAS——國際GNSS監測評估系統,是由中國倡導并主導建設的全球GNSS監測網絡,旨在提供高精度、高可靠的導航、定位與授時服務。 …

清理HiNas(海納斯) Docker日志并限制日志大小

我在一個機頂盒的HiNas系統上跑Octoprint的docker版本,每隔一段時間盒子空間就被占完了,運行df -h之后,顯示/dev/root Use 100%。 Filesystem Size Used Avail Use% Mounted on /dev/root 6.6G 6.6G 0 100% / devtmpfs …

RK3588芯片NPU的使用:yolov8-pose例子圖片檢測在安卓系統部署與源碼深度解析(rknn api)

一、本文的目標 將yolo8-pose例子適配安卓端,提供選擇圖片后進行姿態識別功能。通過項目學習源碼和rknn api。二、開發環境說明 主機系統:Windows 11目標設備:搭載RK3588芯片的安卓開發板核心工具:Android Studio Koala | 2024.1.1 Patch 2,NDK 27.0三、適配(遷移)安卓 …

DeepSeek本地部署手冊

版本:v1.0 適用對象:零基礎開發者 一、部署前準備 1.1 硬件要求 組件最低配置推薦配置說明CPUIntel i5 8代Xeon Gold 6230需支持AVX指令集內存16GB64GB模型越大需求越高GPUNVIDIA GTX 1060 (6GB)RTX 3090 (24GB)需CUDA 11.7+存儲50GB可用空間1TB NVMe SSD建議預留2倍模型大小…

HashMap的源碼解析

HashMap基于哈希表的Map接口實現,是以key-value存儲形式存在,即主要用來存放鍵值對。HashMap的實現不是同步的,這意味著它不是線程安全的。它的key、value都可以為null。此外,HashMap中的映射不是有序的。 JDK1.8 之前 HashMap由數…

論文精讀:大規模MIMO波束選擇問題的量子計算解決方案

論文精讀:大規模MIMO波束選擇問題的量子計算解決方案 概要: 隨著大規模多輸入多輸出系統(MIMO)在5G及未來通信技術中的應用,波束選擇問題(MBS)成為提升系統性能的關鍵。傳統的波束選擇方法面臨計…

DPIN河內AI+DePIN峰會:共繪藍圖,加速構建去中心化AI基礎設施新生態

近日,一場聚焦前沿科技融合的盛會——AIDePIN峰會在越南河內成功舉辦。此次峰會由DPIN、QPIN及42DAO等Web3領域的創新項目聯合組織,匯聚了眾多Web3行業領袖、技術專家與社區成員。峰會于2025年4月19日舉行,其核心議題圍繞去中心化物理基礎設施…

品牌公關如何邀請媒體采訪?|微信文案模版

傳媒如春雨,潤物細無聲,大家好,我是51媒體胡老師。 📸?不論是舉行活動、展會、發布會、推介會,還是新店開業🎉 都需要邀約媒體出席活動并采訪報道🎤📰 我們需要在活動前提醒媒體參…

影樓精修-手部青筋祛除算法解析

注意:本文樣例圖片為了避免侵權,均使用AIGC生成; 手部青筋祛除科普 手部青筋祛除是影樓精修中一個非常精細的工作,需要較高的修圖技巧,目前市面上很少有自動化的青筋祛除功能的,而像素蛋糕目測是第一個做到…

智慧景區國標GB28181視頻平臺EasyGBS視頻融合應用全場景解決方案

一、方案背景? 隨著旅游業的蓬勃發展,景區的規模不斷擴大,游客數量持續增長,對景區的安全管理和游客服務質量提出了更高要求。打造一個高效、智能的視頻監控及管理系統成為景區運營的關鍵。EasyGBS作為一款基于國標GB28181協議的視頻云服務…

dedecms織夢arclist標簽noflag屬性過濾多個參數

織夢dedecms系統arclist標簽noflag屬性默認是只能過濾一個參數,比如過濾推薦是noflagc,過濾有圖片的文章是noflagc,在模板制作過程中,有時候我們為了seo和避免重復,需要過濾多個參數。今天小編就來跟大家講講織夢dedec…

如何用go語言搭MCP

1.什么是MCP? MCP是“模型上下文協議(Model Context Protocol)”的簡稱,用一句簡單通俗易懂的話描述: 是一種讓 AI 模型能夠無縫連接到外部工具和數據源的標準化方式。想象它就像 AI 的“萬能接口”,能讓 AI 像用 USB 線連接設備一樣,輕松調用其他程序或服務。2.官方M…

js 的call 和apply方法用處

主要用于ECMAScript與宿主環境(文檔對象(DOM)、瀏覽器對象(BOM))的交互中; 例子:function changeStyle(attr, value){ this.style[attr] value; } …

移動通信行業術語

英文縮寫英文全稱中文名稱解釋/上下文舉例IMSIP Multimedia SubsystemIP多媒體子系統SIPSession Initiation Protocol會話初始化協議常見小寫sip同。ePDG/EPDGEvolved Packet Data Gateway演進分組數據網關 EPDG是LTE(4G)和后續蜂窩網絡架構(…

c++11新特性隨筆

1.統一初始化特性 c98中不支持花括號進行初始化&#xff0c;編譯時會報錯&#xff0c;在11當中初始化可以通過{}括號進行統一初始化。 c98編譯報錯 c11: #include <iostream> #include <set> #include <string> #include <vector>int main() {std:…

Spark-Streaming簡介 核心編程

1. Spark-Streaming概述 定義&#xff1a;用于處理流式數據&#xff0c;支持多種數據輸入源&#xff0c;可運用Spark原語運算&#xff0c;結果能保存于多處。它以離散化流&#xff08;DStream&#xff09;為抽象表示&#xff0c;是RDD在實時數據處理場景的封裝。 特點&#x…

SpringbootWeb開發(注解和依賴配置)

Lombok 工具 Spring Web web開發相關依賴 MyBatis Framework MyBatis驅動 MySQL Driver MySql驅動包 Restful 風格 Slf4j 記錄日志對象 RequestMapping(value “/depts”, method RequestMethod.GET) //指定請求方式為GET method 指定請求方式 GetMapping 限定請求方式為Get…

雜項知識點

雜項 1 激活函數1.1 sigmoid1.2 tanh1.3 Relu1.4 leakRelu 1 激活函數 常用的激活函數包括sigmoid tanh Relu leakRelu 1.1 sigmoid import torch import numpy as np import matplotlib.pyplot as plt # sigmoid tanh Relu leakRelu ## 1 sigmoid ### 1.1 代碼復現sig…

計算機組成原理:指令系統

計算機組成原理:指令集系統 指令集體系結構(ISA)ISA定義ISA包含的內容舉個栗子指令的基本組成(操作碼+地址碼)指令分類:地址碼的個數定長操作碼變長操作碼變長操作碼的原則變長操作碼的設計指令尋址尋址方式的目的尋址方式分類有效地址直接在指令中給出有效地址間接給出有效地…

Rust實現高性能目錄掃描工具ll的技術解析

Rust實現高性能目錄掃描工具ll的技術解析 一、項目概述 本項目使用Rust構建了一個類ls命令行工具&#xff0c;具備以下核心特性&#xff1a; 多格式文件信息展示并行目錄掃描加速人類可讀文件大小運行時性能統計交互式進度提示 二、技術架構 1. 關鍵技術棧 clap&#xff…