python實(shí)現(xiàn)抖音視頻批量下載
更新時間:2018年06月20日 09:16:32 作者:y1175626605
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)抖音視頻批量下載,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了python實(shí)現(xiàn)抖音視頻批量下載的具體代碼,供大家參考,具體內(nèi)容如下
這里就拿最近很火的抖音視頻為例,利用API來實(shí)現(xiàn)用戶抖音視頻的批量下載
主要用到的模塊有
1、requests模塊;
2、bs4模塊;
import requests import bs4 import os import json import re import sys import time from contextlib import closing requests.packages.urllib3.disable_warnings() class Spider(): def __init__(self): 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]: Charles') # 外部調(diào)用運(yùn)行 def run(self): user_id = input('Enter the ID:') try: int(user_id) except: print('[Error]:ID error...') return video_names, video_urls, nickname = self._parse_userID(user_id) if nickname not in os.listdir(): os.mkdir(nickname) print('[INFO]:Number of Videos <%s>' % len(video_urls)) for num in range(len(video_names)): print('[INFO]:Parsing <No.%d> <Url:%s>' % (num+1, video_urls[num])) temp = video_names[num].replace('\\', '') video_name = temp.replace('/', '') self._downloader(video_urls[num], os.path.join(nickname, video_name)) print('\n') print('[INFO]:All Done...') # 視頻下載 def _downloader(self, video_url, path): size = 0 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): f.write(data) size += len(data) f.flush() sys.stdout.write('[Progress]: %0.2f%%' % float(size/content_size*100) + '\r') sys.stdout.flush() # 獲得視頻下載地址 def _get_download_url(self, video_url): res = requests.get(url=video_url, verify=False) soup = bs4.BeautifulSoup(res.text, 'lxml') script = soup.find_all('script')[-1] video_url_js = re.findall('var data = \[(.+)\];', str(script))[0] html = json.loads(video_url_js) return html['video']['play_addr']['url_list'][0] # 通過user_id獲取該用戶發(fā)布的所有視頻 def _parse_userID(self, user_id): video_names = [] video_urls = [] unique_id = '' while unique_id != user_id: 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'] user_url = 'https://www.douyin.com/aweme/v1/aweme/post/?user_id={}&max_cursor=0&count={}'.format(uid, aweme_count) res = requests.get(url=user_url, verify=False) res_dic = json.loads(res.text) i = 1 for each in res_dic['aweme_list']: share_desc = each['share_info']['share_desc'] if '抖音-原創(chuàng)音樂短視頻社區(qū)' == 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()
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- Python爬蟲實(shí)戰(zhàn)案例之爬取喜馬拉雅音頻數(shù)據(jù)詳解
- python爬蟲智能翻頁批量下載文件的實(shí)例詳解
- 用python批量下載apk
- python 根據(jù)列表批量下載網(wǎng)易云音樂的免費(fèi)音樂
- 用python爬蟲批量下載pdf的實(shí)現(xiàn)
- python FTP批量下載/刪除/上傳實(shí)例
- 使用python3批量下載rbsp數(shù)據(jù)的示例代碼
- 如何基于Python批量下載音樂
- python爬蟲 批量下載zabbix文檔代碼實(shí)例
- python+POP3實(shí)現(xiàn)批量下載郵件附件
- python實(shí)現(xiàn)壁紙批量下載代碼實(shí)例
- Python實(shí)現(xiàn)Youku視頻批量下載功能
- Python爬蟲之批量下載喜馬拉雅音頻
相關(guān)文章
Python實(shí)現(xiàn)平行坐標(biāo)圖的繪制(plotly)方式
今天小編就為大家分享一篇Python實(shí)現(xiàn)平行坐標(biāo)圖的繪制(plotly)方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11Python zip()函數(shù)用法實(shí)例分析
這篇文章主要介紹了Python zip()函數(shù)用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Python zip()函數(shù)的功能、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-03-03Python中單線程、多線程和多進(jìn)程的效率對比實(shí)驗(yàn)實(shí)例
這篇文章主要介紹了Python單線程多線程和多進(jìn)程效率對比,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05python的列表生成式,生成器和generator對象你了解嗎
這篇文章主要為大家詳細(xì)介紹了python的列表生成式,生成器和generator對象,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03