1. 程式人生 > >python之批量下載抖音視訊

python之批量下載抖音視訊

python批量下載抖音視訊

知識儲備:博主是在Pycharm下進行的
資料夾:dou_ying
這裡寫圖片描述

1:在資料夾doy_ying下新建第一個檔案:dou_ying_video_download.py
程式碼:

# coding=utf-8
"""
@author: jiajiknag
程式功能:批量下載抖音視訊
"""
import requests
import bs4
import os
import json
import re
import sys
import time
# 如果一個物件沒有實現上下文,我們就不能把它用於with語句。這個時候,可以用closing()來把該物件變為上下文物件。
# closing-將任意物件變為上下文物件,並支援with語句。 from contextlib import closing # Urllib3是一個功能強大,條理清晰,用於HTTP客戶端的Python庫 # urllib3.disable_warnings()禁用urllib3警告的方法 requests.packages.urllib3.disable_warnings() # 建立類Sipder() class Spider(): def __init__(self): # UA對照表:https://blog.csdn.net/time888/article/details/72822729
self.headers = { # 使用者代理:用於瀏覽器識別的,可以看出自己系統版本,瀏覽器,瀏覽器核心等 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36' } # 輸出資訊-視訊資訊 print('[INFO]:Douyin(抖音) App Video downloader...'
) print('[Version]: V1.0') print('[Author]: Jiajikang') # 建立函式run():外部呼叫執行 def run(self): # 輸入ID地址(爬去某人抖音視訊的抖音號) user_id = input('Enter the ID:') try: # 因為抖音號是數字所以使用int()驗證是否是數字 int(user_id) # 輸入錯誤時輸出except下的語句 except: print('[Error]:ID error...') return video_names, video_urls, nickname = self._parse_userID(user_id) # os.listdir()方法用於返回指定的資料夾包含的檔案或資料夾的名字的列表 if nickname not in os.listdir(): # os.mkdir() 方法用於以數字許可權模式建立目錄 os.mkdir(nickname) print('[INFO]:Number of Videos <%s>' % len(video_urls)) for num in range(len(video_names)): # %d是一個佔位符,標識一個字串型的資料, %s也是一個佔位符,標識一個字串型的資料 print('[INFO]:Parsing <No.%d> <Url:%s>' % (num+1, video_urls[num])) temp = video_names[num].replace('\\', '') video_name = temp.replace('/', '') # 呼叫函式_downloader() self._downloader(video_urls[num], os.path.join(nickname, video_name)) print('\n') print('[INFO]:All Done...') # 建立函式_downloader()並含有引數:路徑和視訊的url-視訊下載 def _downloader(self, video_url, path): # 定義size並初始化為0 size = 0 # 定義一個變數download_url:利用函式_get_download_url()來獲取視訊url download_url = self._get_download_url(video_url) with closing(requests.get(download_url, headers=self.headers, stream=True, verify=False)) as response: chunk_size = 1024 content_size = int(response.headers['content-length']) if response.status_code == 200: sys.stdout.write('[File Size]: %0.2f MB\n' % (content_size/chunk_size/1024)) # 使用寫入的方式開啟,如果該檔案已存在則將其覆蓋。如果該檔案不存在,建立新檔案。 with open(path, 'wb') as f: # 遍歷獲取資料 for data in response.iter_content(chunk_size=chunk_size): # 向檔案中寫入指定的字串data f.write(data) # 計算寫入字串的長度 size += len(data) # flush() 方法是用來重新整理緩衝區的,即將緩衝區中的資料立刻寫入檔案,同時清空緩衝區,不需要是被動的等待輸出緩衝區寫入。 f.flush() sys.stdout.write('[Progress]: %0.2f%%' % float(size/content_size*100) + '\r') sys.stdout.flush() # 建立函式_get_download_url()並含有形參video_url:獲得視訊下載地址 def _get_download_url(self, video_url): # 獲取視訊的下載地址 # Requests 可以為 HTTPS 請求驗證 SSL 證書,就像 web 瀏覽器一樣。要想檢查某個主機的 SSL 證書,你可以使用 verify 引數: # 定義變數res用來接收視訊地址,verify 僅應用於主機證書 res = requests.get(url=video_url, verify=False) # 將res.text 檔案利用'lxml'解析成xml檔案,瞭解lxml--https://blog.csdn.net/tanzuozhev/article/details/50442243 soup = bs4.BeautifulSoup(res.text, 'lxml') # 使用find_all來獲取網頁中JavaScript中的script的變數;[-1]去除最後一個字元 script = soup.find_all('script')[-1] # 定義變數date=正則表示式\[(.+)]\,[0]可以使其返回一個字典 video_url_js = re.findall('var data = \[(.+)\];', str(script))[0] # 使用loads()下載 html = json.loads(video_url_js) # 返回,使用[0]是返回一個字典 return html['video']['play_addr']['url_list'][0] # 定義函式_parse_userID()且形參user_id;通過user_id獲取該使用者釋出的所有視訊 def _parse_userID(self, user_id): # 獲取所有視訊 video_names = [] video_urls = [] unique_id = '' # 當獲取的id不是使用者的id時: while unique_id != user_id: # 獲取url-下載 search_url = 'https://api.amemv.com/aweme/v1/discover/search/?keyword={}&count=10&type=1&aid=1128'.format(user_id) res = requests.get(url=search_url, verify=False) res_dic = json.loads(res.text) uid = res_dic['user_list'][0]['user_info']['uid'] aweme_count = res_dic['user_list'][0]['user_info']['aweme_count'] nickname = res_dic['user_list'][0]['user_info']['nickname'] unique_id = res_dic['user_list'][0]['user_info']['unique_id'] # 使用者的url user_url = 'https://www.douyin.com/aweme/v1/aweme/post/?user_id={}&max_cursor=0&count={}'.format(uid, aweme_count) # 請求獲取使用者的url res = requests.get(url=user_url, verify=False) # 下載後去的url轉換的文字 res_dic = json.loads(res.text) i = 1 # 遍歷下載的文字 for each in res_dic['aweme_list']: share_desc = each['share_info']['share_desc'] if '抖音-原創音樂短視訊社群' == share_desc: video_names.append(str(i) + '.mp4') i += 1 else: video_names.append(share_desc + '.mp4') video_urls.append(each['share_info']['share_url']) return video_names, video_urls, nickname """ if __name__ == '__main__': # 建立物件 sp = Spider() sp.run() """

溫馨提示: 有些庫是要自己去下載,一般使用命令在提示符下輸入:pip install 自己要下載的庫,如下圖是博主下載的。
這裡寫圖片描述

2:在資料夾doy_ying下新建第二個檔案:run.py
程式碼:

# coding=utf-8
"""
@author: jiajiknag
程式功能: 測試抖音視訊的下載
"""
from dou_ying_video_download import Spider
if __name__ == '__main__':
    # 建立類Spider()物件
    sp = Spider()
    # 執行開始下載
    sp.run()

3:結果
這是我在抖音中隨便找的一個釋出抖音視訊比較少的來測試一下,以及我還下載了自己(Jjk:624609873(douying number))的抖音
這裡寫圖片描述
這裡寫圖片描述

相關推薦

python批量下載視訊

python批量下載抖音視訊 知識儲備:博主是在Pycharm下進行的 資料夾:dou_ying 1:在資料夾doy_ying下新建第一個檔案:dou_ying_video_download.py 程式碼: # coding=utf-8 """ @

今日頭條、、西瓜、火山、微視、陌陌等自媒體平臺小視訊批量下載工具(視訊搬運福利)

前言 目前各大自媒體平臺爆火,網路流量暴漲,各大自媒體平臺的小視訊為廣大個廣告主帶來了如泉湧般的的視訊流量,更給廣大的自媒體小編帶來了豐厚的利益回報,想要創做更多的自媒體內容著實不易,下面給廣大的小視訊自媒體小編帶來一款視訊搬運的利器,《全網自媒體小視訊批量下載工具》,眾多的自媒體平臺,教你如何快速下載抖音

python3 爬蟲實戰:mitmproxy 對接 python 下載視訊

  From:https://blog.csdn.net/Fan_shui/article/details/81461253     一、前言   前面我們已經用 appium 爬取了微信朋友圈,今天我們學習下 mitmproxy,mi

利用python爬蟲實現:短視訊無水印視訊下載

  各位小夥伴,之前一段時間迷上了抖音小姐姐視訊,但是下載的視訊都有水印,於是自己用Python 寫了個爬取小姐姐視訊的工具,大家可以直接拷貝到自己編譯器上執行。經過半天的琢磨,自己用python搞出來一個根據抖音分享視訊連結去除水印並下載的功能。此外,我還利用pyqt5寫了

python3爬蟲實戰(三):mitmproxy對接python下載視訊

一、前言 前面我們已經用appium爬取了微信朋友圈,今天我們學習下mitmproxy,mitmproxy是幹什麼的呢,它跟charles和fiddler類似,是一個抓包工具,以控制檯的形式顯示,mitmproxy的重要性在於它可以對接python,可

視訊下載教程,視訊去水印批量下載

第一步,下載軟體 windows系統64位版:下載地址 第二步,解壓登入軟體 軟體綠色免安裝,解壓zip包後,直接點選douyin.exe(mac下直接就是douyin) 輸入試用賬號登入。 賬號: user201810 密碼:123123   你們不要私自改密

視訊無水印下載軟體,視訊批量下載工具

發現一個抖音視訊無水印下載軟體分享給大家。 可以檢視使用者作品列表和喜歡列表,有一鍵下載功能。 網盤地址, windows 64位的: 下載地址 軟體賬號  user201810  密碼123123   你們不要私自改密碼啊!!! 我用著感覺還不錯。用來批量下載視訊素

視訊怎麼下載MP4格式怎麼轉換為MP3

  抖音是一款很流行的短視訊軟體,以前很多夥伴是在刷微博,現在大多數夥伴在刷抖音。一些網友在瀏覽抖音上的短視訊的時候,會被視訊裡面的一些歌給吸引了,有一些歌非常的搞笑,有一些歌非常深情,而有一些歌非常的有個性,因此,網友就特別想把抖音裡的一些歌下載到手機上,那麼,抖音上的歌怎麼下載?下面,小編給大家

錄製視訊需要下載什麼軟體?

  平時刷抖音的時候不知道你們有沒有發現很多點贊數多的作品並不是自己的原作品有些也是用手機隨便錄製一些東西就火了,生活中有很多意想不到的事情,我們精心準備的作品不一定能火,但是隨手一錄製的視訊那就一不小心就火了,關於那些×××姐是如何錄製手機視訊的,今天就來教你們一款好用的錄屏大師神器,來跟著小編一起學習

Android 仿使用OpenGL實現視訊錄製

前言 在之前寫了仿抖音的第一步,就是使用OpenGL顯示攝像頭資料,今天這篇就是在之前的基礎上來錄製視訊,並且對之前的程式碼的結構進行了簡單的整理,然後進行了仿抖音的視訊錄製。 工程結構整理 在仿抖音的第一步中封裝了ScreenFilter類來實現渲染螢幕的操作,我們都知道在抖音

Python 視訊和評論爬蟲

引言 平時工作閒的時候,會刷刷抖音。於是想爬取一下抖音的視訊。網上搜索資料,發現多數都是爬取固定使用者的主頁視訊。我想要的效果是爬取首頁的隨機視訊和評論,於是自己抓包分析,實現效果。在做專案的過程中遇到了一些問題,在此記錄下來。 專案地址 抖音爬蟲 如果有幫助的話,記得給個s

分享一個視訊下載程式

在網上呼叫別人的介面來實現的功能  import requests import execjs # 生成引數s def generateStr(a): js = ''' test = function(a) { var

Python爬蟲---爬取視訊

[TOC] ##前言 最近一直想要寫一個抖音爬蟲來批量下載抖音的短視訊,但是經過幾天的摸索我發現了一個很嚴重的問題......抖音實在是難爬!從一開始的網頁分析中就有著很多的坑,但是這幾天的摸索也不是一無所獲,我鼓搗出來了一個問題版的抖音爬蟲(操作較為複雜),所以我也想通過這篇部落格來記錄下我分析網頁的過程,

python批量文件重命名

獲取 讓我 split 夢想 重命名 批量 文件重命名 chdir http 批量文件重命名問題,生活中或是工作中會經常用到。方法比較low多試驗幾次就可以了。 # -*- coding: utf-8 -*- # @Time :2018/8/25 20:18 # @A

記錄一次python爬蟲批量下載一個校花網站的妹子圖片

學python也快2個禮拜了,從開始看別人寫的爬蟲程式碼,然後試著抄著學習,感覺沒太大進步,最大收穫就是改了幾處bug(可能有些地方不適用我的pyyhon平臺報錯)。 中午看到一個帖子校花妹子圖使用爬蟲進行批量下載,看了下,感覺不錯(我說的技術,哈哈哈)。 然後決定自己寫一個爬蟲,已經看書兩個禮

iOS多種重新整理樣式、音樂播放器、仿視訊、旅遊App等原始碼

iOS精選原始碼 企業級開源專案,模仿藝龍旅行App 3D立體相簿,可以旋轉的立方體 橫豎屏切換工具,使用陀螺儀檢測手機裝置方向,鎖屏狀... Swift版Refresh(可以自定義多種樣式)架構方面有所優化 電商/新聞類頂部滑動按鈕條 iMiss 音樂播放器 iOS-P

小程式類似視訊整屏切換

需求 最近在專案中需要加一個功能,在小程式中將已有的短視訊功能,按照抖音的方式來瀏覽,整屏,可上下滑動切換視訊,並新增上滑下滑的動畫。 思路 1.在video標籤上新增時間監聽。 2.如果1無法成功,就在video上面罩一層 cover-view,在cover-view上新增時間監聽。 3.如果上面兩種

練手_抓取手機視訊

# python 3.7 import requests,json class Douyin(object): def __init__(self): self.staticurl='https://api-eagle.amemv.com/aweme/v1/fe

python爬取下載b站視訊

python爬蟲系列: 上一篇 python爬取圖蟲網相簿 今天突然來了興趣想要爬取下載b站視訊,話不多說,說幹就幹。 Usage 下載倉庫 [email protected]:inspurer/PythonSpider.git 或者直接下載:https://git

我用 Python 實現自動刷小姐姐!

前言 都說抖音有毒,一刷就停不下來了,看來抖音這款產品緊緊抓住了人們內心深處的某些需求。當然今天不是來探討抖音這款產品的啊。今天我們來學習如何用Python實現自動刷抖音,併為顏值高的的小哥哥小姐姐點贊並評論。 專案環境 語言:Python3 編輯器:Pycharm 其他工具:手